# Introduction:
Department

Here are preliminary results of the bibliometric mapping of the 2022 Luxembourg research evaluation. Its purpose is:

The method for the research-field-mapping can be reiviewed here:

Rakas, M., & Hain, D. S. (2019). The state of innovation system research: What happens beneath the surface?. Research Policy, 48(9), 103787.

Seed Articles

The seed articles deemed representative for the active areas of research in the institution, and include authors affiliated with the institution. They can be selected in three ways:

  1. Via bibliographic clustering of the institutions publications and selection of most central articles per cluster (only clsuters where n >= 0.05N). Selection can be found at:https://github.com/daniel-hain/biblio_lux_2022/blob/master/output/seed/scopus_lih_tmoh_seed.csv
  2. MAnual selection of relevant publications.
  3. A combination of 1. and 2.

The present analysis is based on the following seed articles:

AU PY TI JI
GONDER S;FERNANDEZ BOTANA I… 2020 METHOD FOR THE ANALYSIS OF THE TUMOR MICROENVIRONMENT BY MASS CYTOMETRY: APPLICATION TO CHRONIC L… FRONT. IMMUNOL.
DITTMAR G;WINKLHOFER KF 2020 LINEAR UBIQUITIN CHAINS: CELLULAR FUNCTIONS AND STRATEGIES FOR DETECTION AND QUANTIFICATION FRONT. CHEM.
SCHLICKER L;BOERS HM;DUDEK … 2019 POSTPRANDIALMETABOLIC EFFECTS OF FIBERMIXES REVEALED BY IN VIVO STABLE ISOTOPE LABELING IN HUMANS METABOLITES
DUFRESNE J;BOWDEN P;THAVARA… 2018 THE PLASMA PEPTIDOME 03 CHEMICAL SCIENCES 0301 ANALYTICAL CHEMISTRY CLIN. PROTEOMICS
BAHLAWANE C;SCHMITZ M;LETEL… 2017 INSIGHTS INTO LIGAND STIMULATION EFFECTS ON GASTRO-INTESTINAL STROMAL TUMORS SIGNALLING CELL. SIGNAL.

Topic modelling

Here, we report the results of a LDA topic-modelling (basically, clustering on words) on all title+abstract texts.

Topics by topwords

Note: While this static vies is helpful, I recommend using the interactive LDAVis version to be found under https://daniel-hain.github.io/biblio_lux_2022/output/topic_modelling/LDAviz_lih_tmoh.rds/index.html#topic=1&lambda=0.60&term=. For functionality and usage, see technical description in the next tab.

Topics over time

Technical Description

LDA Topic Modelling

Topic modeling is a type of statistical modeling for discovering the abstract “topics” that occur in a collection of documents. Latent Dirichlet Allocation (LDA) is an example of topic model and is used to classify text in a document to a particular topic.

LDA is a generative probabilistic model that assumes each topic is a mixture over an underlying set of words, and each document is a mixture of over a set of topic probabilities. It builds a topic per document model and words per topic model, modeled as Dirichlet distributions.

LDAVis

LDAvis is a web-based interactive visualisation of topics estimated using LDA. It provides a global view of the topics (and how they differ from each other), while at the same time allowing for a deep inspection of the terms most highly associated with each individual topic. The package extracts information from a fitted LDA topic model to inform an interactive web-based visualization. The visualisation has two basic pieces.

The left panel visualise the topics as circles in the two-dimensional plane whose centres are determined by computing the Jensen–Shannon divergence between topics, and then by using multidimensional scaling to project the inter-topic distances onto two dimensions. Each topic’s overall prevalence is encoded using the areas of the circles.

The right panel depicts a horizontal bar chart whose bars represent the individual terms that are the most useful for interpreting the currently selected topic on the left. A pair of overlaid bars represent both the corpus-wide frequency of a given term as well as the topic-specific frequency of the term.

The \(\lambda\) slider allows to rank the terms according to term relevance. By default, the terms of a topic are ranked in decreasing order according their topic-specific probability ( \(\lambda\) = 1 ). Moving the slider allows to adjust the rank of terms based on much discriminatory (or “relevant”) are for the specific topic. The suggested optimal value of \(\lambda\) is 0.6.

Knowledge Bases: Co-Citation network analysis

Note: This analysis refers the co-citation analysis, where the cited references and not the original publications are the unit of analysis. See tab Technical descriptionfor additional explanations

Knowledge Bases summary

In order to partition networks into components or clusters, we deploy a community detection technique based on the Lovain Algorithm (Blondel et al., 2008). The Lovain Algorithm is a heuristic method that attempts to optimize the modularity of communities within a network by maximizing within- and minimizing between-community connectivity. We identify the following communities = knowledge bases.

com name dgr_int dgr
Knowledge Base 1: KB 1 (n = 2190, density =2.88)
1 KOMANDER D. RAPE M. THE UBIQUITIN CODE (2012) 7044 9075
1 SWATEK K.N. KOMANDER D. UBIQUITIN MODIFICATIONS (2016) 3968 4657
1 YAU R. RAPE M. THE INCREASING COMPLEXITY OF THE UBIQUITIN CODE (2016) 3669 4111
1 HERSHKO A. CIECHANOVER A. THE UBIQUITIN SYSTEM (1998) 3513 4543
1 MEYER H.J. RAPE M. ENHANCED PROTEIN DEGRADATION BY BRANCHED UBIQUITIN CHAINS (2014) 2729 2874
1 HUSNJAK K. DIKIC I. UBIQUITIN-BINDING PROTEINS: DECODERS OF UBIQUITIN-MEDIATED CELLULAR FUNCTIONS (2012) 2284 2755
1 MEVISSEN T.E.T. KOMANDER D. MECHANISMS OF DEUBIQUITINASE SPECIFICITY AND REGULATION (2017) 2213 2616
1 YE Y. RAPE M. BUILDING UBIQUITIN CHAINS: E2 ENZYMES AT WORK (2009) 1242 1327
1 DESHAIES R.J. JOAZEIRO C.A. RING DOMAIN E3 UBIQUITIN LIGASES (2009) 1167 1338
1 XU P. DUONG D.M. SEYFRIED N.T. CHENG D. XIE Y. ROBERT J. RUSH J. PENG J. QUANTITATIVE PROTEOMICS REVEALS THE FUNCTION OF UNCONVENTIONAL UBIQUITIN C… 1095 1130
Knowledge Base 2: KB 2 (n = 931, density =6.17)
2 BRUGGNER R.V. BODENMILLER B. DILL D.L. TIBSHIRANI R.J. NOLAN G.P. AUTOMATED IDENTIFICATION OF STRATIFYING SIGNATURES IN CELLULAR SUBPOPULATIONS (2014) 1498 1501
2 VAN DER MAATEN L. HINTON G. VISUALIZING DATA USING T-SNE (2008) 1159 1165
2 WEBER L.M. ROBINSON M.D. COMPARISON OF CLUSTERING METHODS FOR HIGH-DIMENSIONAL SINGLE-CELL FLOW AND MASS CYTOMETRY DATA (2016) 1093 1093
2 SPITZER M.H. NOLAN G.P. MASS CYTOMETRY: SINGLE CELLS MANY FEATURES (2016) 1036 1036
2 LEVINE J.H. DATA-DRIVEN PHENOTYPIC DISSECTION OF AML REVEALS PROGENITOR-LIKE CELLS THAT CORRELATE WITH PROGNOSIS (2015) 951 951
2 SAMUSIK N. GOOD Z. SPITZER M.H. DAVIS K.L. NOLAN G.P. AUTOMATED MAPPING OF PHENOTYPE SPACE WITH SINGLE-CELL DATA (2016) 889 893
2 BENDALL S.C. NOLAN G.P. ROEDERER M. CHATTOPADHYAY P.K. A DEEP PROFILER’S GUIDE TO CYTOMETRY (2012) 766 766
2 BANDURA D.R. BARANOV V.I. ORNATSKY O.I. ANTONOV A. KINACH R. LOU X. PAVLOV S. TANNER S.D. MASS CYTOMETRY: TECHNIQUE FOR REAL TIME SINGLE CELL MULTI… 748 748
2 SHEKHAR K. BRODIN P. DAVIS M.M. CHAKRABORTY A.K. AUTOMATIC CLASSIFICATION OF CELLULAR EXPRESSION BY NONLINEAR STOCHASTIC EMBEDDING (ACCENSE) 703 703
2 KOTECHA N. KRUTZIK P.O. IRISH J.M. WEB-BASED ANALYSIS AND PUBLICATION OF FLOW CYTOMETRY EXPERIMENTS (2010) 680 683
Knowledge Base 3: KB 3 (n = 782, density =11.38)
3 MICHEAU O. TSCHOPP J. INDUCTION OF TNF RECEPTOR I-MEDIATED APOPTOSIS VIA TWO SEQUENTIAL SIGNALING COMPLEXES (2003) 1658 3414
3 HAAS T.L. EMMERICH C.H. GERLACH B. SCHMUKLE A.C. CORDIER S.M. RIESER E. FELTHAM R. WENGER T. RECRUITMENT OF THE LINEAR UBIQUITIN CHAIN ASSEMBLY COM… 1224 1379
3 KIRISAKO T. KAMEI K. MURATA S. KATO M. FUKUMOTO H. KANIE M. SANO S. IWAI K. A UBIQUITIN LIGASE COMPLEX ASSEMBLES LINEAR POLYUBIQUITIN CHAINS (2006) 1211 1713
3 DRABER P. KUPKA S. REICHERT M. DRABEROVA H. LAFONT E. DE MIGUEL D. SPILGIES L. HARTWIG T. LUBAC-RECRUITED CYLD AND A20 REGULATE GENE ACTIVATION AND… 1034 1123
3 GERLACH B. CORDIER S.M. SCHMUKLE A.C. EMMERICH C.H. RIESER E. HAAS T.L. WEBB A.I. WONG W.W. LINEAR UBIQUITINATION PREVENTS INFLAMMATION AND REGULAT… 973 1079
3 HE S. WANG L. MIAO L. WANG T. DU F. ZHAO L. WANG X. RECEPTOR INTERACTING PROTEIN KINASE-3 DETERMINES CELLULAR NECROTIC RESPONSE TO TNF-ALPHA (2009) 959 989
3 BERTRAND M.J. MILUTINOVIC S. DICKSON K.M. HO W.C. BOUDREAULT A. DURKIN J. GILLARD J.W. BARKER P.A. CIAP1 AND CIAP2 FACILITATE CANCER CELL SURVIVAL … 958 999
3 WANG L. DU F. WANG X. TNF-ALPHA INDUCES TWO DISTINCT CASPASE-8 ACTIVATION PATHWAYS (2008) 871 1500
3 OBERST A. DILLON C.P. WEINLICH R. MCCORMICK L.L. FITZGERALD P. POP C. HAKEM R. GREEN D.R. CATALYTIC ACTIVITY OF THE CASPASE-8-FLIP(L) 811 834
3 PELTZER N. RIESER E. TARABORRELLI L. DRABER P. DARDING M. PERNAUTE B. SHIMIZU Y. MONTINARO A. HOIP DEFICIENCY CAUSES EMBRYONIC LETHALITY BY ABERRAN… 742 779
Knowledge Base 4: KB 4 (n = 641, density =12.89)
4 MIETTINEN M. LASOTA J. GASTROINTESTINAL STROMAL TUMORS: PATHOLOGY AND PROGNOSIS AT DIFFERENT SITES (2006) 1351 1351
4 HIROTA S. ISOZAKI K. MORIYAMA Y. GAIN-OF-FUNCTION MUTATIONS OF C-KIT IN HUMAN GASTROINTESTINAL STROMAL TUMORS (1998) 1285 1285
4 VERWEIJ J. CASALI P.G. ZALCBERG J. PROGRESSION-FREE SURVIVAL IN GASTROINTESTINAL STROMAL TUMOURS WITH HIGH-DOSE IMATINIB: RANDOMISED TRIAL (2004) 1116 1116
4 HEINRICH M.C. CORLESS C.L. DUENSING A. PDGFRA ACTIVATING MUTATIONS IN GASTROINTESTINAL STROMAL TUMORS (2003) 1070 1070
4 DEMETRI G.D. VON MEHREN M. BLANKE C.D. EFFICACY AND SAFETY OF IMATINIB MESYLATE IN ADVANCED GASTROINTESTINAL STROMAL TUMORS (2002) 1053 1053
4 DEMETRI G.D. VAN OOSTEROM A.T. GARRETT C.R. EFFICACY AND SAFETY OF SUNITINIB IN PATIENTS WITH ADVANCED GASTROINTESTINAL STROMAL TUMOUR AFTER FAILUR… 907 907
4 BLANKE C.D. RANKIN C. DEMETRI G.D. PHASE III RANDOMIZED INTERGROUP TRIAL ASSESSING IMATINIB MESYLATE AT TWO DOSE LEVELS IN PATIENTS WITH UNRESECTAB… 806 806
4 HEINRICH M.C. CORLESS C.L. DEMETRI G.D. KINASE MUTATIONS AND IMATINIB RESPONSE IN PATIENTS WITH METASTATIC GASTROINTESTINAL STROMAL TUMOR (2003) 739 739
4 JOENSUU H. RISK STRATIFICATION OF PATIENTS DIAGNOSED WITH GASTROINTESTINAL STROMAL TUMOR (2008) 723 723
4 HEINRICH M.C. MAKI R.G. CORLESS C.L. PRIMARY AND SECONDARY KINASE GENOTYPES CORRELATE WITH THE BIOLOGICAL AND CLINICAL ACTIVITY OF SUNITINIB IN IMA… 721 721
Knowledge Base 5: KB 5 (n = 485, density =20.51)
5 GERLACH B. CORDIER S.M. SCHMUKLE A.C. EMMERICH C.H. RIESER E. HAAS T.L. LINEAR UBIQUITINATION PREVENTS INFLAMMATION AND REGULATES IMMUNE SIGNALLING… 1414 1727
5 HAAS T.L. EMMERICH C.H. GERLACH B. SCHMUKLE A.C. CORDIER S.M. RIESER E. RECRUITMENT OF THE LINEAR UBIQUITIN CHAIN ASSEMBLY COMPLEX STABILIZES THE T… 1110 1326
5 BOISSON B. LAPLANTINE E. DOBBS K. COBAT A. TARANTINO N. HAZEN M. HUMAN HOIP AND LUBAC DEFICIENCY UNDERLIES AUTOINFLAMMATION IMMUNODEFICIENCY AMYLOP… 931 1069
5 DRABER P. KUPKA S. REICHERT M. DRABEROVA H. LAFONT E. DE MIGUEL D. LUBAC-RECRUITED CYLD AND A20 REGULATE GENE ACTIVATION AND CELL DEATH BY EXERTING… 893 1062
5 BOISSON B. LAPLANTINE E. PRANDO C. GILIANI S. ISRAELSSON E. XU Z. IMMUNODEFICIENCY AUTOINFLAMMATION AND AMYLOPECTINOSIS IN HUMANS WITH INHERITED HO… 880 995
5 DAMGAARD R.B. WALKER J.A. MARCO-CASANOVA P. MORGAN N.V. TITHERADGE H.L. ELLIOTT P.R. THE DEUBIQUITINASE OTULIN IS AN ESSENTIAL NEGATIVE REGULATOR O… 846 991
5 ELLIOTT P.R. LESKE D. HRDINKA M. BAGOLA K. FIIL B.K. MCLAUGHLIN S.H. SPATA2 LINKS CYLD TO LUBAC ACTIVATES CYLD AND CONTROLS LUBAC SIGNALING (2016) 770 910
5 KEUSEKOTTEN K. ELLIOTT P.R. GLOCKNER L. FIIL B.K. DAMGAARD R.B. KULATHU Y. OTULIN ANTAGONIZES LUBAC SIGNALING BY SPECIFICALLY HYDROLYZING MET1-LINK… 694 961
5 FIIL B.K. DAMGAARD R.B. WAGNER S.A. KEUSEKOTTEN K. FRITSCH M. BEKKER-JENSEN S. OTULIN RESTRICTS MET1-LINKED UBIQUITINATION TO CONTROL INNATE IMMUNE… 683 811
5 KUPKA S. DE MIGUEL D. DRABER P. MARTINO L. SURINOVA S. RITTINGER K. SPATA2-MEDIATED BINDING OF CYLD TO HOIP ENABLES CYLD RECRUITMENT TO SIGNALING C… 682 820
Knowledge Base 6: KB 6 (n = 424, density =30.48)
6 GERLACH B. LINEAR UBIQUITINATION PREVENTS INFLAMMATION AND REGULATES IMMUNE SIGNALLING (2011) 1492 1741
6 HAAS T.L. RECRUITMENT OF THE LINEAR UBIQUITIN CHAIN ASSEMBLY COMPLEX STABILIZES THE TNF-R1 SIGNALING COMPLEX AND IS REQUIRED FOR TNF-MEDIATED GENE … 1213 1374
6 DRABER P. LUBAC-RECRUITED CYLD AND A20 REGULATE GENE ACTIVATION AND CELL DEATH BY EXERTING OPPOSING EFFECTS ON LINEAR UBIQUITIN IN SIGNALING COMPLE… 976 1075
6 DILLON C.P. RIPK1 BLOCKS EARLY POSTNATAL LETHALITY MEDIATED BY CASPASE-8 AND RIPK3 (2014) 879 914
6 JACO I. MK2 PHOSPHORYLATES RIPK1 TO PREVENT TNF-INDUCED CELL DEATH (2017) 837 902
6 SUN L. MIXED LINEAGE KINASE DOMAIN-LIKE PROTEIN MEDIATES NECROSIS SIGNALING DOWNSTREAM OF RIP3 KINASE (2012) 820 876
6 NEWTON K. RIPK3 DEFICIENCY OR CATALYTICALLY INACTIVE RIPK1 PROVIDES GREATER BENEFIT THAN MLKL DEFICIENCY IN MOUSE MODELS OF INFLAMMATION AND TISSUE… 768 799
6 PELTZER N. HOIP DEFICIENCY CAUSES EMBRYONIC LETHALITY BY ABERRANT TNFR1-MEDIATED ENDOTHELIAL CELL DEATH (2014) 765 848
6 BERGER S.B. CUTTING EDGE: RIP1 KINASE ACTIVITY IS DISPENSABLE FOR NORMAL DEVELOPMENT BUT IS A KEY REGULATOR OF INFLAMMATION IN SHARPIN-DEFICIENT MI… 736 770
6 DEGTEREV A. IDENTIFICATION OF RIP1 KINASE AS A SPECIFIC CELLULAR TARGET OF NECROSTATINS (2008) 711 745
Knowledge Base 7: KB 7 (n = 407, density =11.73)
7 CRAIG R. BEAVIS R.C. TANDEM: MATCHING PROTEINS WITH TANDEM MASS SPECTRA (2004) 1276 1276
7 COX J. MANN M. MAXQUANT ENABLES HIGH PEPTIDE IDENTIFICATION RATES INDIVIDUALIZED P.P.B.-RANGE MASS ACCURACIES AND PROTEOME-WIDE PROTEIN QUANTIFICAT… 705 1017
7 ENG J.K. MCCORMACK A.L. YATES J.R. AN APPROACH TO CORRELATE TANDEM MASS SPECTRAL DATA OF PEPTIDES WITH AMINO ACID SEQUENCES IN A PROTEIN DATABASE (… 427 446
7 ELIAS J.E. GYGI S.P. TARGET-DECOY SEARCH STRATEGY FOR INCREASED CONFIDENCE IN LARGE-SCALE PROTEIN IDENTIFICATIONS BY MASS SPECTROMETRY (2007) 353 380
7 BOWDEN P. BEAVIS R. MARSHALL J. TANDEM MASS SPECTROMETRY OF HUMAN TRYPTIC BLOOD PEPTIDES CALCULATED BY A STATISTICAL ALGORITHM AND CAPTURED BY A RE… 312 312
7 SCHWARTZ J.C. SENKO M.W. SYKA J.E. A TWO-DIMENSIONAL QUADRUPOLE ION TRAP MASS SPECTROMETER (2002) 304 304
7 ENG J.K. JAHAN T.A. HOOPMANN M.R. COMET: AN OPEN-SOURCE MS/MS SEQUENCE DATABASE SEARCH TOOL (2013) 295 295
7 BENJAMINI Y. HOCHBERG Y. CONTROLLING FALSE DISCOVERY RATE: A PRACTICAL APPROACH TO MULTIPLE TESTING (1995) 295 295
7 BOWDEN P. META SEQUENCE ANALYSIS OF HUMAN BLOOD PEPTIDES AND THEIR PARENT PROTEINS (2010) 294 294
7 BOWDEN P. QUANTITATIVE STATISTICAL ANALYSIS OF STANDARD AND HUMAN BLOOD PROTEINS FROM LIQUID CHROMATOGRAPHY ELECTROSPRAY IONIZATION AND TANDEM MASS… 294 294

Development of Knowledge Bases

Technical description

In a co-cittion network, the strength of the relationship between a reference pair \(m\) and \(n\) (\(s_{m,n}^{coc}\)) is expressed by the number of publications \(C\) which are jointly citing reference \(m\) and \(n\).

\[s_{m,n}^{coc} = \sum_i c_{i,m} c_{i,n}\]

The intuition here is that references which are frequently cited together are likely to share commonalities in theory, topic, methodology, or context. It can be interpreted as a measure of similarity as evaluated by other researchers that decide to jointly cite both references. Because the publication process is time-consuming, co-citation is a backward-looking measure, which is appropriate to map the relationship between core literature of a field.

Research Areas: Bibliographic coupling analysis

Research Areas main summary

This is arguably the more interesting part. Here, we identify the literature’s current knowledge frontier by carrying out a bibliographic coupling analysis of the publications in our corpus. This measure uses bibliographical information of publications to establish a similarity relationship between them. Again, method details to be found in the tab Technical description. As you will see, we identify the main research area, but also a set of adjacent research areas with some theoretical/methodological/application overlap.

To identify communities in the field’s knowledge frontier (labeled research areas) we again use the Lovain Algorithm (Blondel et al., 2008). We identify the following communities = research areas.

com_name AU PY TI dgr_int TC TC_year
Research Area 1: RA 1 (n = 765, density =0.32)
RA 1 SWATEK KN;KOMANDER D 2016 UBIQUITIN MODIFICATIONS 5.1272201 805 134.1666667
RA 1 YAU R;RAPE M 2016 THE INCREASING COMPLEXITY OF THE UBIQUITIN CODE 6.5307263 510 85.0000000
RA 1 MEVISSEN TET;KOMANDER D 2017 MECHANISMS OF DEUBIQUITINASE SPECIFICITY AND REGULATION 5.5094730 432 86.4000000
RA 1 KWON YT;CIECHANOVER A 2017 THE UBIQUITIN CODE IN THE UBIQUITIN-PROTEASOME SYSTEM AND AUTOPHAGY 6.5241986 312 62.4000000
RA 1 AKUTSU M;DIKIC I;BREMM A 2016 UBIQUITIN CHAIN DIVERSITY AT A GLANCE 7.2533119 257 42.8333333
RA 1 ZHENG N;SHABEK N 2017 UBIQUITIN LIGASES: STRUCTURE, FUNCTION, AND REGULATION 3.2312116 515 103.0000000
RA 1 BUETOW L;HUANG DT 2016 STRUCTURAL INSIGHTS INTO THE CATALYSIS AND REGULATION OF E3 UBIQUITIN LIGASES 6.1490412 252 42.0000000
RA 1 CLAGUE MJ;URBÉ S;KOMAN… 2019 BREAKING THE CHAINS: DEUBIQUITYLATING ENZYME SPECIFICITY BEGETS FUNCTION 5.3545038 253 84.3333333
RA 1 OHTAKE F;SAEKI Y;ISHID… 2016 THE K48-K63 BRANCHED UBIQUITIN CHAIN REGULATES NF-ΚB SIGNALING 8.2297279 155 25.8333333
RA 1 OHTAKE F;TSUCHIYA H;SA… 2018 K63 UBIQUITYLATION TRIGGERS PROTEASOMAL DEGRADATION BY SEEDING BRANCHED UBIQUITIN CHAINS 9.6846455 117 29.2500000
Research Area 2: RA 2 (n = 684, density =0.22)
RA 2 SPITZER MH;NOLAN GP 2016 MASS CYTOMETRY: SINGLE CELLS, MANY FEATURES 8.4260663 607 101.1666667
RA 2 BECHT E;MCINNES L;HEAL… 2019 DIMENSIONALITY REDUCTION FOR VISUALIZING SINGLE-CELL DATA USING UMAP 2.9448535 1214 404.6666667
RA 2 WOLF FA;ANGERER P;THEI… 2018 SCANPY: LARGE-SCALE SINGLE-CELL GENE EXPRESSION DATA ANALYSIS 2.2441145 1050 262.5000000
RA 2 CHEVRIER S;LEVINE JH;Z… 2017 AN IMMUNE ATLAS OF CLEAR CELL RENAL CELL CARCINOMA 3.1459785 485 97.0000000
RA 2 WEI SC;LEVINE JH;COGDI… 2017 DISTINCT CELLULAR MECHANISMS UNDERLIE ANTI-CTLA-4 AND ANTI-PD-1 CHECKPOINT BLOCKADE 2.2863878 643 128.6000000
RA 2 AZIZI E;CARR AJ;PLITAS… 2018 SINGLE-CELL MAP OF DIVERSE IMMUNE PHENOTYPES IN THE BREAST TUMOR MICROENVIRONMENT 1.7005383 653 163.2500000
RA 2 SAEYS Y;VAN GASSEN S;L… 2016 COMPUTATIONAL FLOW CYTOMETRY: HELPING TO MAKE SENSE OF HIGH-DIMENSIONAL IMMUNOLOGY DATA 3.9600564 252 42.0000000
RA 2 WAGNER J;RAPSOMANIKI M… 2019 A SINGLE-CELL ATLAS OF THE TUMOR AND IMMUNE ECOSYSTEM OF HUMAN BREAST CANCER 3.4354435 272 90.6666667
RA 2 SETTY M;TADMOR MD;REIC… 2016 WISHBONE IDENTIFIES BIFURCATING DEVELOPMENTAL TRAJECTORIES FROM SINGLE-CELL DATA 2.9063262 317 52.8333333
RA 2 HABER AL;BITON M;ROGEL… 2017 A SINGLE-CELL SURVEY OF THE SMALL INTESTINAL EPITHELIUM 1.3689450 603 120.6000000
Research Area 3: RA 3 (n = 499, density =0.26)
RA 3 SIDDIQUI I;SCHAEUBLE K… 2019 INTRATUMORAL TCF1 + PD-1 + CD8 + T CELLS WITH STEM-LIKE PROPERTIES PROMOTE TUMOR CONTROL IN RESPONSE TO VACCINATION AND CH… 1.9260532 435 145.0000000
RA 3 CASSETTA L;FRAGKOGIANN… 2019 HUMAN TUMOR-ASSOCIATED MACROPHAGE AND MONOCYTE TRANSCRIPTIONAL LANDSCAPES REVEAL CANCER-SPECIFIC REPROGRAMMING, BIOMARKERS… 1.3934573 313 104.3333333
RA 3 JIA D;LI S;LI D;XUE H;… 2018 MINING TCGA DATABASE FOR GENES OF PROGNOSTIC VALUE IN GLIOBLASTOMA MICROENVIRONMENT 2.0598796 186 46.5000000
RA 3 HUNDHAUSEN C;ROTH A;WH… 2016 ENHANCED T CELL RESPONSES TO IL-6 IN TYPE 1 DIABETES ARE ASSOCIATED WITH EARLY CLINICAL DISEASE AND INCREASED IL-6 RECEPTO… 3.5596426 57 9.5000000
RA 3 CHEN L;LU D;SUN K;XU Y… 2019 IDENTIFICATION OF BIOMARKERS ASSOCIATED WITH DIAGNOSIS AND PROGNOSIS OF COLORECTAL CANCER PATIENTS BASED ON INTEGRATED BIO… 3.4102884 58 19.3333333
RA 3 CHAUDHARY K;POIRION OB… 2018 DEEP LEARNING–BASED MULTI-OMICS INTEGRATION ROBUSTLY PREDICTS SURVIVAL IN LIVER CANCER 0.5616913 347 86.7500000
RA 3 MAN K;GABRIEL SS;LIAO … 2017 TRANSCRIPTION FACTOR IRF4 PROMOTES CD8+ T CELL EXHAUSTION AND LIMITS THE DEVELOPMENT OF MEMORY-LIKE T CELLS DURING CHRONIC… 1.1712076 166 33.2000000
RA 3 OMENETTI S;BUSSI C;MET… 2019 THE INTESTINE HARBORS FUNCTIONALLY DISTINCT HOMEOSTATIC TISSUE-RESIDENT AND INFLAMMATORY TH17 CELLS 1.3381012 106 35.3333333
RA 3 CHEN L;YUAN L;WANG Y;W… 2017 CO-EXPRESSION NETWORK ANALYSIS IDENTIFIED FCER1G IN ASSOCIATION WITH PROGRESSION AND PROGNOSIS IN HUMAN CLEAR CELL RENAL C… 1.9524960 71 14.2000000
RA 3 MEYER-SCHALLER N;CARDN… 2019 A HIERARCHICAL REGULATORY LANDSCAPE DURING THE MULTIPLE STAGES OF EMT 3.3852320 36 12.0000000
Research Area 4: RA 4 (n = 436, density =0.39)
RA 4 KALLIOLIAS GD;IVASHKIV LB 2016 TNF BIOLOGY, PATHOGENIC MECHANISMS AND EMERGING THERAPEUTIC STRATEGIES 1.6882166 564 94.0000000
RA 4 ZHANG Q;LENARDO MJ;BAL… 2017 30 YEARS OF NF-ΚB: A BLOSSOMING OF RELEVANCE TO HUMAN PATHOBIOLOGY 1.0405773 906 181.2000000
RA 4 LAFONT E;DRABER P;RIES… 2018 TBK1 AND IKKΕ PREVENT TNF-INDUCED CELL DEATH BY RIPK1 PHOSPHORYLATION 6.1194171 115 28.7500000
RA 4 JACO I;ANNIBALDI A;LAL… 2017 MK2 PHOSPHORYLATES RIPK1 TO PREVENT TNF-INDUCED CELL DEATH 4.4520368 158 31.6000000
RA 4 YUAN J;AMIN P;OFENGEIM D 2019 NECROPTOSIS AND RIPK1-MEDIATED NEUROINFLAMMATION IN CNS DISEASES 2.8333469 245 81.6666667
RA 4 AFONINA IS;ZHONG Z;KAR… 2017 LIMITING INFLAMMATION - THE NEGATIVE REGULATION OF NF-B AND THE NLRP3 INFLAMMASOME 2.0213319 324 64.8000000
RA 4 NEWTON K;DUGGER DL;MAL… 2016 RIPK3 DEFICIENCY OR CATALYTICALLY INACTIVE RIPK1 PROVIDES GREATER BENEFIT THAN MLKL DEFICIENCY IN MOUSE MODELS OF INFLAMMA… 2.4160591 260 43.3333333
RA 4 ANNIBALDI A;MEIER P 2018 CHECKPOINTS IN TNF-INDUCED CELL DEATH: IMPLICATIONS IN INFLAMMATION AND CANCER 4.6201760 114 28.5000000
RA 4 DAMGAARD RB;WALKER JA;… 2016 THE DEUBIQUITINASE OTULIN IS AN ESSENTIAL NEGATIVE REGULATOR OF INFLAMMATION AND AUTOIMMUNITY 3.0168380 174 29.0000000
RA 4 TING AT;BERTRAND MJM 2016 MORE TO LIFE THAN NF-ΚB IN TNFR1 SIGNALING 3.7053416 141 23.5000000
Research Area 5: RA 5 (n = 375, density =0.63)
RA 5 MEHREN MV;JOENSUU H 2018 GASTROINTESTINAL STROMAL TUMORS 9.8259758 129 32.2500000
RA 5 JOENSUU H;ERIKSSON M;S… 2016 ADJUVANT IMATINIB FOR HIGH-RISK GI STROMAL TUMOR: ANALYSIS OF A RANDOMIZED TRIAL 8.7968715 135 22.5000000
RA 5 JOENSUU H;WARDELMANN E… 2017 EFFECT OF KIT AND PDGFRA MUTATIONS ON SURVIVAL IN PATIENTS WITH GASTROINTESTINAL STROMAL TUMORS TREATED WITH ADJUVANT IMAT… 6.9814786 93 18.6000000
RA 5 NISHIDA T;BLAY J-Y;HIR… 2016 THE STANDARD DIAGNOSIS, TREATMENT, AND FOLLOW-UP OF GASTROINTESTINAL STROMAL TUMORS BASED ON GUIDELINES 2.5769039 209 34.8333333
RA 5 BLAY J-Y;SERRANO C;HEI… 2020 RIPRETINIB IN PATIENTS WITH ADVANCED GASTROINTESTINAL STROMAL TUMOURS (INVICTUS): A DOUBLE-BLIND, RANDOMISED, PLACEBO-CONT… 5.2016129 103 51.5000000
RA 5 CASALI PG;FUMAGALLI E;… 2017 TEN-YEAR PROGRESSION-FREE AND OVERALL SURVIVAL IN PATIENTS WITH UNRESECTABLE OR METASTATIC GI STROMAL TUMORS: LONG-TERM AN… 5.3497528 92 18.4000000
RA 5 RAUT CP;ESPAT NJ;MAKI … 2018 EFFICACY AND TOLERABILITY OF 5-YEAR ADJUVANT IMATINIB TREATMENT FOR PATIENTS WITH RESECTED INTERMEDIATE- OR HIGH-RISK PRIM… 9.0031630 50 12.5000000
RA 5 HEINRICH MC;JONES RL;V… 2020 AVAPRITINIB IN ADVANCED PDGFRA D842V-MUTANT GASTROINTESTINAL STROMAL TUMOUR (NAVIGATOR): A MULTICENTRE, OPEN-LABEL, PHASE … 4.5861442 90 45.0000000
RA 5 KOO D-H;RYU M-H;KIM K-… 2016 ASIAN CONSENSUS GUIDELINES FOR THE DIAGNOSIS AND MANAGEMENT OF GASTROINTESTINAL STROMAL TUMOR 4.5590811 90 15.0000000
RA 5 AKAHOSHI K;OYA M;KOGA … 2018 CURRENT CLINICAL MANAGEMENT OF GASTROINTESTINAL STROMAL TUMOR 4.0173370 98 24.5000000
Research Area 6: RA 6 (n = 343, density =0.36)
RA 6 PINO LK;SEARLE BC;BOLL… 2020 THE SKYLINE ECOSYSTEM: INFORMATICS FOR QUANTITATIVE MASS SPECTROMETRY PROTEOMICS 2.6170797 193 96.5000000
RA 6 THE M;MACCOSS MJ;NOBLE… 2016 FAST AND ACCURATE PROTEIN FALSE DISCOVERY RATES ON LARGE-SCALE PROTEOMICS DATA SETS WITH PERCOLATOR 3.0 3.6126290 130 21.6666667
RA 6 LANGELLA O;VALOT B;BAL… 2017 X!TANDEMPIPELINE: A TOOL TO MANAGE SEQUENCE REDUNDANCY FOR PROTEIN INFERENCE AND PHOSPHOSITE IDENTIFICATION 4.3603205 100 20.0000000
RA 6 GEYER PE;HOLDT LM;TEUP… 2017 REVISITING BIOMARKER DISCOVERY BY PLASMA PROTEOMICS 1.3686954 318 63.6000000
RA 6 GESSULAT S;SCHMIDT T;Z… 2019 PROSIT: PROTEOME-WIDE PREDICTION OF PEPTIDE TANDEM MASS SPECTRA BY DEEP LEARNING 1.1098241 224 74.6666667
RA 6 GEYER PE;WEWER ALBRECH… 2016 PROTEOMICS REVEALS THE EFFECTS OF SUSTAINED WEIGHT LOSS ON THE HUMAN PLASMA PROTEOME 1.5790183 118 19.6666667
RA 6 RANDLES MJ;HUMPHRIES M… 2017 PROTEOMIC DEFINITIONS OF BASEMENT MEMBRANE COMPOSITION IN HEALTH AND DISEASE 1.9849478 76 15.2000000
RA 6 WICHMANN C;MEIER F;WIN… 2019 MAXQUANT.LIVE ENABLES GLOBAL TARGETING OF MORE THAN 25,000 PEPTIDES 3.0851013 47 15.6666667
RA 6 SCHWENK JM;OMENN GS;SU… 2017 THE HUMAN PLASMA PROTEOME DRAFT OF 2017: BUILDING ON THE HUMAN PLASMA PEPTIDEATLAS FROM MASS SPECTROMETRY AND COMPLEMENTAR… 1.2358327 109 21.8000000
RA 6 TSOU C-C;TSAI C-F;TEO … 2016 UNTARGETED, SPECTRAL LIBRARY-FREE ANALYSIS OF DATA-INDEPENDENT ACQUISITION PROTEOMICS DATA GENERATED USING ORBITRAP MASS S… 2.9080684 46 7.6666667
Research Area 7: RA 7 (n = 302, density =3.08)
RA 7 HESTHAVEN JS;UBBIALI S 2018 NON-INTRUSIVE REDUCED ORDER MODELING OF NONLINEAR PROBLEMS USING NEURAL NETWORKS 7.8040049 154 38.5000000
RA 7 LIEVENS A;JACCHIA S;KA… 2016 MEASURING DIGITAL PCR QUALITY: PERFORMANCE PARAMETERS AND THEIR OPTIMIZATION 10.8998666 74 12.3333333
RA 7 BANGALORE P;LETZGUS S;… 2017 AN ARTIFICIAL NEURAL NETWORK-BASED CONDITION MONITORING METHOD FOR WIND TURBINES, WITH APPLICATION TO THE MONITORING OF TH… 9.5373716 79 15.8000000
RA 7 ASKHAM T;KUTZ JN 2018 VARIABLE PROJECTION METHODS FOR AN OPTIMIZED DYNAMIC MODE DECOMPOSITION 8.0648413 73 18.2500000
RA 7 LAZZARI F;BUFFI A;NEPA… 2017 NUMERICAL INVESTIGATION OF AN UWB LOCALIZATION TECHNIQUE FOR UNMANNED AERIAL VEHICLES IN OUTDOOR SCENARIOS 11.5838130 41 8.2000000
RA 7 LASSENBERGER A;GRÜNEWA… 2017 MONODISPERSE IRON OXIDE NANOPARTICLES BY THERMAL DECOMPOSITION: ELUCIDATING PARTICLE FORMATION BY SECOND-RESOLVED IN SITU … 7.7476544 60 12.0000000
RA 7 BARBIERI S;DONATI OF;F… 2016 IMPACT OF THE CALCULATION ALGORITHM ON BIEXPONENTIAL FITTING OF DIFFUSION-WEIGHTED MRI IN UPPER ABDOMINAL ORGANS 7.8235777 58 9.6666667
RA 7 ROBERT DJ;RAJEEV P;KOD… 2016 EQUATION TO PREDICT MAXIMUM PIPE STRESS INCORPORATING INTERNAL AND EXTERNAL LOADINGS ON BURIED PIPES 13.2664507 28 4.6666667
RA 7 AMIGO JM;DEL OLMO ALVA… 2016 STALING OF WHITE WHEAT BREAD CRUMB AND EFFECT OF MALTOGENIC Α-AMYLASES. PART 1: SPATIAL DISTRIBUTION AND KINETIC MODELING … 9.7564730 38 6.3333333
RA 7 ARSLAN D;CHONG KE;MIRO… 2017 ANGLE-SELECTIVE ALL-DIELECTRIC HUYGENS’ METASURFACES 9.4285586 39 7.8000000
Research Area 8: RA 8 (n = NA, density =NA)
NA HIPP G;VAILLANT M;DIED… 2018 THE LUXEMBOURG PARKINSON’S STUDY: A COMPREHENSIVE APPROACH FOR STRATIFICATION AND EARLY DIAGNOSIS 0.0275229 25 6.2500000
NA KRÄMER L;JÄGER C;TREZZ… 2018 QUANTIFICATION OF STABLE ISOTOPE TRACES CLOSE TO NATURAL ENRICHMENT IN HUMAN PLASMA METABOLITES USING GAS CHROMATOGRAPHY-M… 0.0714286 7 1.7500000
NA SIMONS JA;VAILLANT M;H… 2019 MULTILINGUAL VALIDATION OF THE FIRST FRENCH VERSION OF MUNICH DYSPHAGIA TEST—PARKINSON’S DISEASE (MDT-PD) IN THE LUXEMBOUR… 0.0275229 1 0.3333333
NA BOUR C;SCHMITZ S;AHNE … 2021 SCOPING REVIEW PROTOCOL ON THE USE OF SOCIAL MEDIA FOR HEALTH RESEARCH PURPOSES 0.0091743 2 2.0000000
NA LINN N;GOETZINGER C;RE… 2021 DIGITAL HEALTH INTERVENTIONS AMONG PEOPLE LIVING WITH FRAILTY: A SCOPING REVIEW 0.0091743 1 1.0000000
NA FAGHERAZZI G;ZHANG L;A… 2021 TOWARDS PRECISION CARDIOMETABOLIC PREVENTION: RESULTS FROM A MACHINE LEARNING, SEMI-SUPERVISED CLUSTERING APPROACH IN THE … 0.0000000 0 0.0000000
NA ROSALES JUBAL E;SCHWAL… 2021 ACITRETIN REVERSES EARLY FUNCTIONAL NETWORK DEGRADATION IN A MOUSE MODEL OF FAMILIAL ALZHEIMER’S DISEASE 0.0000000 3 3.0000000
NA LEONARD C;MONTAMAT G;D… 2021 COMPREHENSIVE MAPPING OF IMMUNE TOLERANCE YIELDS A REGULATORY TNF RECEPTOR 2 SIGNATURE IN A MURINE MODEL OF SUCCESSFUL FEL… 0.0000000 2 2.0000000
NA BOUR C;AHNE A;SCHMITZ … 2021 THE USE OF SOCIAL MEDIA FOR HEALTH RESEARCH PURPOSES: SCOPING REVIEW 0.0000000 3 3.0000000
NA ADAMS P;FIEVEZ V;SCHOB… 2021 CD32+CD4+ MEMORY T CELLS ARE ENRICHED FOR TOTAL HIV-1 DNA IN TISSUES FROM HUMANIZED MICE 0.0000000 3 3.0000000

Development

Connectivity between the research areas

Technical description

In a bibliographic coupling network, the coupling-strength between publications is determined by the number of commonly cited references they share, assuming a common pool of references to indicate similarity in context, methods, or theory. Formally, the strength of the relationship between a publication pair \(i\) and \(j\) (\(s_{i,j}^{bib}\)) is expressed by the number of commonly cited references.

\[s_{i,j}^{bib} = \sum_m c_{i,m} c_{j,m}\]

Since our corpus contains publications which differ strongly in terms of the number of cited references, we normalize the coupling strength by the Jaccard similarity coefficient. Here, we weight the intercept of two publications’ bibliography (shared refeences) by their union (number of all references cited by either \(i\) or \(j\)). It is bounded between zero and one, where one indicates the two publications to have an identical bibliography, and zero that they do not share any cited reference. Thereby, we prevent publications from having high coupling strength due to a large bibliography (e.g., literature surveys).

\[S_{i,j}^{jac-bib} =\frac{C(i \cap j)}{C(i \cup j)} = \frac{s_{i,j}^{bib}}{c_i + c_j - s_{i,j}^{bib}}\]

More recent articles have a higher pool of possible references to co-cite to, hence they are more likely to be coupled. Consequently, bibliographic coupling represents a forward looking measure, and the method of choice to identify the current knowledge frontier at the point of analysis.

Knowledge Bases, Research Areas & Topics Interaction

Endnotes

All results are preliminary so far…

LS0tCnRpdGxlOiAiTHV4ZW1ib3VyZyBSZXNlYXJjaCBFdmFsdWF0aW9uIDIwMjI6IEZpZWxkIE1hcHBpbmcgb2YgS25vd2xlZGdlIFN0cnVjdHVyZSIKYXV0aG9yOiAiRGFuaWVsIFMuIEhhaW4iCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCLCAlWScpYCIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZTogZmxhdGx5CiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGRmX3ByaW50OiBwYWdlZAogICAgdG9jOiBmYWxzZQogICAgdG9jX2RlcHRoOiAyCiAgICB0b2NfZmxvYXQ6CiAgICAgIGNvbGxhcHNlZDogZmFsc2UKICBodG1sX2RvY3VtZW50OgogICAgdGhlbWU6IGZsYXRseQogICAgY29kZV9mb2xkaW5nOiBoaWRlCiAgICBkZl9wcmludDogcGFnZWQKICAgIHRvYzogZmFsc2UKICAgIHRvY19kZXB0aDogMgogICAgdG9jX2Zsb2F0OgogICAgICBjb2xsYXBzZWQ6IGZhbHNlCnBhcmFtczoKICAgIGluc3RpdHV0ZTogCiAgICAgICB2YWx1ZTogJ1Rlc3RpbnN0JwogICAgZGVwYXJ0bWVudDoKICAgICAgIHZhbHVlOiAnVGVzdGRlcHQnCi0tLQoKPCEtLS0KIyBBZGQgdG8gWUFNTCB3aGVuIHJldmlld2luZwogIGh0bWxfbm90ZWJvb2s6CiAgICB0aGVtZTogZmxhdGx5CiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUKICAgIGRmX3ByaW50OiBwYWdlZAogICAgdG9jOiBmYWxzZQogICAgdG9jX2RlcHRoOiAyCiAgICB0b2NfZmxvYXQ6CiAgICAgIGNvbGxhcHNlZDogZmFsc2UKLS0tPgoKCmBgYHs9aHRtbH0KPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLm1haW4tY29udGFpbmVyIHsKICBtYXgtd2lkdGg6IDEyMDBweDsKICBtYXJnaW4tbGVmdDogYXV0bzsKICBtYXJnaW4tcmlnaHQ6IGF1dG87Cn0KPC9zdHlsZT4KYGBgCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KIyMjIEdlbmVyaWMgcHJlYW1ibGUKI3JtKGxpc3Q9bHMoKSkKU3lzLnNldGVudihMQU5HID0gImVuIikKb3B0aW9ucyhzY2lwZW4gPSA1KQpzZXQuc2VlZCgxMzM3KQoKIyMjIExvYWQgcGFja2FnZXMgIAojIGdlbmVyYWwKbGlicmFyeSh0aWR5dmVyc2UpCmxpYnJhcnkobWFncml0dHIpCgojIEtpYmxpbyAmIE5XCmxpYnJhcnkoYmlibGlvbWV0cml4KQpsaWJyYXJ5KHRpZHlncmFwaCkKbGlicmFyeShnZ3JhcGgpCgojIE5MUApsaWJyYXJ5KHRpZHl0ZXh0KQoKIyBEYXRhdml6CmxpYnJhcnkocGxvdGx5KQoKIyBLbml0CmxpYnJhcnkoa25pdHIpICMgRm9yIGRpc3BsYXkgb2YgdGhlIG1hcmtkb3duCmxpYnJhcnkoa2FibGVFeHRyYSkgIyBGb3IgdGFibGUgc3R5bGluZwoKIyBvd24gZnVuY3Rpb25zCnNvdXJjZSgiLi4vZnVuY3Rpb25zL2Z1bmN0aW9uc19iYXNpYy5SIikKc291cmNlKCIuLi9mdW5jdGlvbnMvZnVuY3Rpb25zX3N1bW1hcnkuUiIpCnNvdXJjZSgiLi4vZnVuY3Rpb25zLzAwX3BhcmFtZXRlcnMuUiIpCgojIEtuaXRyIG9wdGlvbnMKa25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG8gPSBGQUxTRSwgCiAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nID0gRkFMU0UsIAogICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEZBTFNFKQpgYGAKCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KI3Zhcl9pbnN0IDwtICdMSVNFUicKI3Zhcl9kZXB0IDwtICdVRCcKYGBgCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KdmFyX2luc3QgPC0gcGFyYW1zJGluc3RpdHV0ZQp2YXJfZGVwdCA8LSBwYXJhbXMkZGVwYXJ0bWVudApgYGAKCgojIEludHJvZHVjdGlvbjogYHIgdmFyX2luc3RgIERlcGFydG1lbnQgYHIgdmFyX2RlcHRgCgpIZXJlIGFyZSBwcmVsaW1pbmFyeSByZXN1bHRzIG9mIHRoZSBiaWJsaW9tZXRyaWMgbWFwcGluZyBvZiB0aGUgMjAyMiBMdXhlbWJvdXJnIHJlc2VhcmNoIGV2YWx1YXRpb24uIEl0cyBwdXJwb3NlIGlzOgoKKiBUbyBtYXAgdGhlIGJyb2FkZXIgcmVzZWFyY2ggY29tbXVuaXR5IGFuZCBkaXN0aW5jdCByZXNlYXJjaCBmaWVsZCB0aGUgZGVwYXJ0bWVudCBjb250cmlidXRlcyB0by4KKiBJZGVudGlmeSBjb3JlIGtub3dsZWRnZSBiYXNlcywgcmVzZWFyY2ggYXJlYXMgZ3RyZW5kcyBhbmQgdG9waWNzLgoqIEhpZ2hsaWdodCB0aGUgcG9zaXRpb25pbmcgb2YgdGhlIGRlcGFydG1lbnQgd2l0aGluIHRoaXMgZHluYW1pY3MuCgpUaGUgbWV0aG9kIGZvciB0aGUgcmVzZWFyY2gtZmllbGQtbWFwcGluZyBjYW4gYmUgcmVpdmlld2VkIGhlcmU6CgpbUmFrYXMsIE0uLCAmIEhhaW4sIEQuIFMuICgyMDE5KS4gVGhlIHN0YXRlIG9mIGlubm92YXRpb24gc3lzdGVtIHJlc2VhcmNoOiBXaGF0IGhhcHBlbnMgYmVuZWF0aCB0aGUgc3VyZmFjZT8uIFJlc2VhcmNoIFBvbGljeSwgNDgoOSksIDEwMzc4Ny5dKGh0dHBzOi8vZG9pLm9yZy8xMC4xMDE2L2oucmVzcG9sLjIwMTkuMDQuMDExKQoKCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBORVhUIFBBUlQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQojIExvYWQgZGF0YQpNIDwtIHJlYWRSRFMocGFzdGUwKCcuLi8uLi90ZW1wL01fJywgc3RyX3RvX2xvd2VyKHZhcl9pbnN0KSwgJ18nLCBzdHJfdG9fbG93ZXIodmFyX2RlcHQpLCAnLnJkcycpKSAlPiUgYXNfdGliYmxlKCkgJT4lIAogIGRpc3RpbmN0KFVULCAua2VlcF9hbGwgPSBUUlVFKSAlPiUgCiAgZmlsdGVyKFBZID49IFBZX21pbiwgUFkgPD0gUFlfbWF4KSAKYGBgCgojIFNlZWQgQXJ0aWNsZXMKCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQpzZWVkIDwtY29udmVydDJkZihmaWxlID0gcGFzdGUwKCcuLi8uLi9kYXRhL3NlZWRzL3Njb3B1c18nLCBzdHJfdG9fbG93ZXIodmFyX2luc3QpLCAnXycsIHN0cl90b19sb3dlcih2YXJfZGVwdCksICdfc2VlZF9zZWxlY3QuY3N2JyksIGRic291cmNlID0gInNjb3B1cyIsIGZvcm1hdCA9ICJjc3YiKSAlPiUKICBhc190aWJibGUoKSAlPiUKICBtdXRhdGUoc2VlZCA9IFRSVUUpIApgYGAKClRoZSBzZWVkIGFydGljbGVzIGRlZW1lZCByZXByZXNlbnRhdGl2ZSBmb3IgdGhlIGFjdGl2ZSBhcmVhcyBvZiByZXNlYXJjaCBpbiB0aGUgaW5zdGl0dXRpb24sIGFuZCBpbmNsdWRlIGF1dGhvcnMgYWZmaWxpYXRlZCB3aXRoIHRoZSBpbnN0aXR1dGlvbi4gVGhleSBjYW4gYmUgc2VsZWN0ZWQgaW4gdGhyZWUgd2F5czoKCjEuIFZpYSBiaWJsaW9ncmFwaGljIGNsdXN0ZXJpbmcgb2YgdGhlIGluc3RpdHV0aW9ucyBwdWJsaWNhdGlvbnMgYW5kIHNlbGVjdGlvbiBvZiBtb3N0IGNlbnRyYWwgYXJ0aWNsZXMgcGVyIGNsdXN0ZXIgKG9ubHkgY2xzdXRlcnMgd2hlcmUgbiA+PSAwLjA1TikuIFNlbGVjdGlvbiBjYW4gYmUgZm91bmQgYXQ6YHIgcGFzdGUwKCdodHRwczovL2dpdGh1Yi5jb20vZGFuaWVsLWhhaW4vYmlibGlvX2x1eF8yMDIyL2Jsb2IvbWFzdGVyL291dHB1dC9zZWVkL3Njb3B1c18nLCBzdHJfdG9fbG93ZXIodmFyX2luc3QpLCAnXycsIHN0cl90b19sb3dlcih2YXJfZGVwdCksICdfc2VlZC5jc3YnKWAKMi4gTUFudWFsIHNlbGVjdGlvbiBvZiByZWxldmFudCBwdWJsaWNhdGlvbnMuCjMuIEEgY29tYmluYXRpb24gb2YgMS4gYW5kIDIuCgpUaGUgcHJlc2VudCBhbmFseXNpcyBpcyBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIHNlZWQgYXJ0aWNsZXM6CgpgYGB7cn0Kc2VlZCAlPiUKICBzZWxlY3QoQVUsIFBZLCBUSSwgSkkpICU+JQogIG11dGF0ZShBVSA9IEFVICU+JSBzdHJfdHJ1bmMoMzApLAogICAgICAgICBUSSA9IFRJICU+JSBzdHJfdHJ1bmMoMTAwKSwKICAgICAgICAgSkkgPSBKSSAlPiUgc3RyX3RydW5jKDMwKSkgJT4lCiAga2FibGUoKSAlPiUKICBrYWJsZV9zdHlsaW5nKGJvb3RzdHJhcF9vcHRpb25zID0gYygic3RyaXBlZCIsICJob3ZlciIsICJjb25kZW5zZWQiLCAicmVzcG9uc2l2ZSIpLCBmb250X3NpemUgPSAxMCkKYGBgCgoKCiMgVG9waWMgbW9kZWxsaW5nIHsudGFic2V0fQoKSGVyZSwgd2UgcmVwb3J0IHRoZSByZXN1bHRzIG9mIGEgTERBIHRvcGljLW1vZGVsbGluZyAoYmFzaWNhbGx5LCBjbHVzdGVyaW5nIG9uIHdvcmRzKSBvbiBhbGwgdGl0bGUrYWJzdHJhY3QgdGV4dHMuCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KdGV4dF90aWR5IDwtIHJlYWRSRFMocGFzdGUwKCcuLi8uLi90ZW1wL3RleHRfdGlkeV8nLCBzdHJfdG9fbG93ZXIodmFyX2luc3QpLCAnXycsIHN0cl90b19sb3dlcih2YXJfZGVwdCksICcucmRzJykpCnRleHRfbGRhIDwtIHJlYWRSRFMocGFzdGUwKCcuLi8uLi90ZW1wL3RleHRfTERBXycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy5yZHMnKSkgCgp0ZXh0X2xkYV9iZXRhIDwtIHRleHRfbGRhICU+JSB0aWR5KG1hdHJpeCA9ICJiZXRhIikgCnRleHRfbGRhX2dhbW1hIDwtIHRleHRfbGRhICU+JSB0aWR5KG1hdHJpeCA9ICJnYW1tYSIpCmBgYAoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CmNvbV9uYW1lc190b3AgPC0gdGliYmxlKCAKICBjb20gPSAxOih0ZXh0X2xkYV9nYW1tYSAlPiUgcHVsbCh0b3BpYykgJT4lIG5fZGlzdGluY3QoKSksCiAgdHlwZSA9ICdUUCcsCiAgY29sID0gY29tICU+JSBnZ19jb2xvcl9zZWxlY3QocGFsID0gcGFsX3RwKSwKICBjb21fbmFtZSA9IAogICAgIyAjIDFzdCBhbHRlcm5hdGl2ZTogTnVtYmVyIHRoZW0gMS1uCiAgICBwYXN0ZSh0eXBlLCAxOih0ZXh0X2xkYV9nYW1tYSAlPiUgcHVsbCh0b3BpYykgJT4lIG5fZGlzdGluY3QoKSkpCiAgIyAjIDJuZCBhbHRlcm5hdGl2ZTogTG9hZCBmcm9tIGNzdgogICMgcmVhZF9jc3YoJy4uLy4uL2RhdGEvY29tbXVuaXR5X2xhYmVsaW5nJykgJT4lIGZpbHRlcih0eXBlID0gJ3RvcGljJywgaW5zdGl0dXRlID0gdmFyX2luc3QsIGRlcGFydG1lbnQgPSB2YXJfZGVwdCkgJT4lIGFycmFuZ2UoY29tKSAlPiUgcHVsbChsYWJlbCkKICAjIDNyZCBhbHRlcm5hdGl2ZTogZGVjbGFyZSBoZXJlCiAgICAjYygnMSBUSVMgJiBNYXJrZXRzJywgJzIgPyAuLi4gJywpCiAgKQpgYGAKCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQp0ZXh0X2xkYV9iZXRhICU8PiUgIGxlZnRfam9pbihjb21fbmFtZXNfdG9wICU+JSBzZWxlY3QoY29tLCBjb21fbmFtZSwgY29sKSwgYnkgPSBjKCd0b3BpYycgPSAnY29tJykpCnRleHRfbGRhX2dhbW1hICU8PiUgbGVmdF9qb2luKGNvbV9uYW1lc190b3AgJT4lIHNlbGVjdChjb20sIGNvbV9uYW1lLCBjb2wpLCBieSA9IGMoJ3RvcGljJyA9ICdjb20nKSkKYGBgCgoKIyMgVG9waWNzIGJ5IHRvcHdvcmRzCgpgYGB7ciwgZmlnLndpZHRoPTE3LjUsIGZpZy5oZWlnaHQ9MTcuNX0gCnRleHRfbGRhX2JldGEgJT4lCiAgZ3JvdXBfYnkoY29tX25hbWUpICU+JQogIHNsaWNlX21heChiZXRhLCBuID0gMTApICU+JQogIHVuZ3JvdXAoKSAlPiUKICBtdXRhdGUodGVybSA9IHJlb3JkZXJfd2l0aGluKHRlcm0sIGJldGEsIGNvbV9uYW1lKSkgJT4lCiAgZ2dwbG90KGFlcyh0ZXJtLCBiZXRhLCBmaWxsID0gZmFjdG9yKGNvbV9uYW1lKSkpICsKICBnZW9tX2NvbChzaG93LmxlZ2VuZCA9IEZBTFNFKSArCiAgZmFjZXRfd3JhcCh+IGNvbV9uYW1lLCBzY2FsZXMgPSAiZnJlZSIsIG5jb2wgPSAzKSArCiAgY29vcmRfZmxpcCgpICsKICBzY2FsZV94X3Jlb3JkZXJlZCgpICsKICBsYWJzKHggPSAiSW50cmEtdG9waWMgZGlzdHJpYnV0aW9uIG9mIHdvcmQiLAogICAgICAgeSA9ICJXb3JkcyBpbiB0b3BpYyIpICsgCiAgc2NhbGVfZmlsbF9tYW51YWwobmFtZSA9ICJMZWdlbmQiLCB2YWx1ZXMgPSBjb21fbmFtZXNfdG9wICU+JSBwdWxsKGNvbCkpIAoKI3Bsb3RfbHkgPC0gcGxvdCAlPiUgcGxvdGx5OjpnZ3Bsb3RseSgpCiNodG1sd2lkZ2V0czo6c2F2ZVdpZGdldChwbG90bHk6OmFzX3dpZGdldChwbG90X2x5KSwgJy4uL291dHB1dFx2aXNfcGxvdGx5X3RvcGljX3Rlcm1zLmh0bWwnLCBzZWxmY29udGFpbmVkID0gVFJVRSkKYGBgCgoqKk5vdGU6KiogV2hpbGUgdGhpcyBzdGF0aWMgdmllcyBpcyBoZWxwZnVsLCBJIHJlY29tbWVuZCB1c2luZyB0aGUgaW50ZXJhY3RpdmUgTERBVmlzIHZlcnNpb24gdG8gYmUgZm91bmQgdW5kZXIgYHIgcGFzdGUwKCdodHRwczovL2RhbmllbC1oYWluLmdpdGh1Yi5pby9iaWJsaW9fbHV4XzIwMjIvb3V0cHV0L3RvcGljX21vZGVsbGluZy9MREF2aXpfJywgc3RyX3RvX2xvd2VyKHZhcl9pbnN0KSwgJ18nLCBzdHJfdG9fbG93ZXIodmFyX2RlcHQpLCAnLnJkcy9pbmRleC5odG1sI3RvcGljPTEmbGFtYmRhPTAuNjAmdGVybT0nKWAuIEZvciBmdW5jdGlvbmFsaXR5IGFuZCB1c2FnZSwgc2VlIHRlY2huaWNhbCBkZXNjcmlwdGlvbiBpbiB0aGUgbmV4dCB0YWIuCgojIyBUb3BpY3Mgb3ZlciB0aW1lCgpgYGB7ciwgZmlnLndpZHRoID0gMTUsIGZpZy5oZWlnaHQ9Ny41fQp0ZXh0X2xkYV9nYW1tYSAlPiUKICByZW5hbWUod2VpZ2h0ID0gZ2FtbWEpICU+JQogIGxlZnRfam9pbihNICU+JSBzZWxlY3QoWFgsIFBZKSwgYnkgPSBjKCdkb2N1bWVudCcgPSAnWFgnKSkgJT4lCiAgbXV0YXRlKFBZID0gYXMubnVtZXJpYyhQWSkpICU+JQogIGdyb3VwX2J5KFBZLCBjb21fbmFtZSkgJT4lIHN1bW1hcmlzZSh3ZWlnaHQgPSBzdW0od2VpZ2h0KSkgJT4lIHVuZ3JvdXAoKSAlPiUKICBncm91cF9ieShQWSkgJT4lIG11dGF0ZSh3ZWlnaHRfUFkgPSBzdW0od2VpZ2h0KSkgJT4lIHVuZ3JvdXAoKSAlPiUKICBtdXRhdGUod2VpZ2h0X3JlbCA9IHdlaWdodCAvIHdlaWdodF9QWSkgJT4lCiAgc2VsZWN0KFBZLCBjb21fbmFtZSwgd2VpZ2h0LCB3ZWlnaHRfcmVsKSAlPiUKICBmaWx0ZXIoUFkgPj0gUFlfbWluICYgUFkgPD0gUFlfbWF4KSAlPiUKICBhcnJhbmdlKFBZLCBjb21fbmFtZSkgJT4lCiAgcGxvdF9zdW1tYXJ5X3RpbWVsaW5lKHkxID0gd2VpZ2h0LCB5MiA9IHdlaWdodF9yZWwsIHQgPSBQWSwgdF9taW4gPSBQWV9taW4sIHRfbWF4ID0gUFlfbWF4LCBieSA9IGNvbV9uYW1lLCAgbGFiZWwgPSBUUlVFLCBwYWwgPSBwYWxfdHAsIAogICAgICAgICAgICAgICAgICAgICAgICB5MV90ZXh0ID0gIlRvcGljIHBvcHVsYXJpdHkgYW5udWFseSIsIHkyX3RleHQgPSAiU2hhcmUgb2YgdG9waWMgYW5udWFsbHkiKSArCiAgcGxvdF9hbm5vdGF0aW9uKHRpdGxlID0gcGFzdGUoJ1RvcGljIE1vZGVsbGluZzonLCB2YXJfaW5zdCwgJ0RlcHQuJywgdmFyX2RlcHQsIHNlcCA9ICcgJyksCiAgICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gcGFzdGUoJ1RpbWVmcmFtZTonLCBQWV9taW4sICctJywgUFlfbWF4ICwgc2VwID0gJyAnKSwKICAgICAgICAgICAgICAgICAgY2FwdGlvbiA9ICdBYnNvbHV0ZSB0b3BpYyBhcHBlYXJhbmNlIChsZWZ0KSwgUmVsYXRpdmUgdG9waWMgYXBwZWFyYW5jZSAocmlnaHQpJykKYGBgCgoKPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIE5FWFQgUEFSVCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CnJtKHRleHRfdGlkeSwgdGV4dF9sZGEpCmBgYAoKCiMjIFRlY2huaWNhbCBEZXNjcmlwdGlvbgoKIyMjIExEQSBUb3BpYyBNb2RlbGxpbmcKClRvcGljIG1vZGVsaW5nIGlzIGEgdHlwZSBvZiBzdGF0aXN0aWNhbCBtb2RlbGluZyBmb3IgZGlzY292ZXJpbmcgdGhlIGFic3RyYWN0IOKAnHRvcGljc+KAnSB0aGF0IG9jY3VyIGluIGEgY29sbGVjdGlvbiBvZiBkb2N1bWVudHMuIExhdGVudCBEaXJpY2hsZXQgQWxsb2NhdGlvbiAoTERBKSBpcyBhbiBleGFtcGxlIG9mIHRvcGljIG1vZGVsIGFuZCBpcyB1c2VkIHRvIGNsYXNzaWZ5IHRleHQgaW4gYSBkb2N1bWVudCB0byBhIHBhcnRpY3VsYXIgdG9waWMuIAoKTERBIGlzIGEgZ2VuZXJhdGl2ZSBwcm9iYWJpbGlzdGljIG1vZGVsIHRoYXQgYXNzdW1lcyBlYWNoIHRvcGljIGlzIGEgbWl4dHVyZSBvdmVyIGFuIHVuZGVybHlpbmcgc2V0IG9mIHdvcmRzLCBhbmQgZWFjaCBkb2N1bWVudCBpcyBhIG1peHR1cmUgb2Ygb3ZlciBhIHNldCBvZiB0b3BpYyBwcm9iYWJpbGl0aWVzLiBJdCBidWlsZHMgYSB0b3BpYyBwZXIgZG9jdW1lbnQgbW9kZWwgYW5kIHdvcmRzIHBlciB0b3BpYyBtb2RlbCwgbW9kZWxlZCBhcyBEaXJpY2hsZXQgZGlzdHJpYnV0aW9ucy4KCiMjIyBMREFWaXMKCkxEQXZpcyBpcyBhIHdlYi1iYXNlZCBpbnRlcmFjdGl2ZSB2aXN1YWxpc2F0aW9uIG9mIHRvcGljcyBlc3RpbWF0ZWQgdXNpbmcgTERBLiBJdCBwcm92aWRlcyBhIGdsb2JhbCB2aWV3IG9mIHRoZSB0b3BpY3MgKGFuZCBob3cgdGhleSBkaWZmZXIgZnJvbSBlYWNoIG90aGVyKSwgd2hpbGUgYXQgdGhlIHNhbWUgdGltZSBhbGxvd2luZyBmb3IgYSBkZWVwIGluc3BlY3Rpb24gb2YgdGhlIHRlcm1zIG1vc3QgaGlnaGx5IGFzc29jaWF0ZWQgd2l0aCBlYWNoIGluZGl2aWR1YWwgdG9waWMuIFRoZSBwYWNrYWdlIGV4dHJhY3RzIGluZm9ybWF0aW9uIGZyb20gYSBmaXR0ZWQgTERBIHRvcGljIG1vZGVsIHRvIGluZm9ybSBhbiBpbnRlcmFjdGl2ZSB3ZWItYmFzZWQgdmlzdWFsaXphdGlvbi4gVGhlIHZpc3VhbGlzYXRpb24gaGFzIHR3byBiYXNpYyBwaWVjZXMuCgpUaGUgKipsZWZ0IHBhbmVsKiogdmlzdWFsaXNlIHRoZSB0b3BpY3MgYXMgY2lyY2xlcyBpbiB0aGUgdHdvLWRpbWVuc2lvbmFsIHBsYW5lIHdob3NlIGNlbnRyZXMgYXJlIGRldGVybWluZWQgYnkgY29tcHV0aW5nIHRoZSBKZW5zZW7igJNTaGFubm9uIGRpdmVyZ2VuY2UgYmV0d2VlbiB0b3BpY3MsIGFuZCB0aGVuIGJ5IHVzaW5nIG11bHRpZGltZW5zaW9uYWwgc2NhbGluZyB0byBwcm9qZWN0IHRoZSBpbnRlci10b3BpYyBkaXN0YW5jZXMgb250byB0d28gZGltZW5zaW9ucy4gRWFjaCB0b3BpY+KAmXMgb3ZlcmFsbCBwcmV2YWxlbmNlIGlzIGVuY29kZWQgdXNpbmcgdGhlIGFyZWFzIG9mIHRoZSBjaXJjbGVzLgoKVGhlICoqcmlnaHQgcGFuZWwqKiBkZXBpY3RzIGEgaG9yaXpvbnRhbCBiYXIgY2hhcnQgd2hvc2UgYmFycyByZXByZXNlbnQgdGhlIGluZGl2aWR1YWwgdGVybXMgdGhhdCBhcmUgdGhlIG1vc3QgdXNlZnVsIGZvciBpbnRlcnByZXRpbmcgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCB0b3BpYyBvbiB0aGUgbGVmdC4gQSBwYWlyIG9mIG92ZXJsYWlkIGJhcnMgcmVwcmVzZW50IGJvdGggdGhlIGNvcnB1cy13aWRlIGZyZXF1ZW5jeSBvZiBhIGdpdmVuIHRlcm0gYXMgd2VsbCBhcyB0aGUgdG9waWMtc3BlY2lmaWMgZnJlcXVlbmN5IG9mIHRoZSB0ZXJtLgoKVGhlICRcbGFtYmRhJCBzbGlkZXIgYWxsb3dzIHRvIHJhbmsgdGhlIHRlcm1zIGFjY29yZGluZyB0byB0ZXJtIHJlbGV2YW5jZS4gQnkgZGVmYXVsdCwgdGhlIHRlcm1zIG9mIGEgdG9waWMgYXJlIHJhbmtlZCBpbiBkZWNyZWFzaW5nIG9yZGVyIGFjY29yZGluZyB0aGVpciB0b3BpYy1zcGVjaWZpYyBwcm9iYWJpbGl0eSAoICRcbGFtYmRhJCA9IDEgKS4gTW92aW5nIHRoZSBzbGlkZXIgYWxsb3dzIHRvIGFkanVzdCB0aGUgcmFuayBvZiB0ZXJtcyBiYXNlZCBvbiBtdWNoIGRpc2NyaW1pbmF0b3J5IChvciAicmVsZXZhbnQiKSBhcmUgZm9yIHRoZSBzcGVjaWZpYyB0b3BpYy4gVGhlIHN1Z2dlc3RlZCBvcHRpbWFsIHZhbHVlIG9mICRcbGFtYmRhJCBpcyAwLjYuCgoKIyBLbm93bGVkZ2UgQmFzZXM6IENvLUNpdGF0aW9uIG5ldHdvcmsgYW5hbHlzaXMgey50YWJzZXR9CgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KQ19udyA8LSByZWFkUkRTKHBhc3RlMCgnLi4vLi4vdGVtcC9DX253XycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy5yZHMnKSkKYGBgCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KY29tX25hbWVzX2NpdCA8LSB0aWJibGUoIAogIGNvbSA9IDE6KENfbncgJT4lIHB1bGwoY29tKSAlPiUgbl9kaXN0aW5jdCgpKSwKICB0eXBlID0gJ0tCJywKICBjb2wgPSBjb20gJT4lIGdnX2NvbG9yX3NlbGVjdChwYWwgPSBwYWxfa2IpLAogIGNvbV9uYW1lID0gCiAgICAjICMgMXN0IGFsdGVybmF0aXZlOiBOdW1iZXIgdGhlbSAxLW4KICAgIHBhc3RlKHR5cGUsIDE6KENfbncgJT4lIHB1bGwoY29tKSAlPiUgbl9kaXN0aW5jdCgpKSkKICAgICMgIyAybmQgYWx0ZXJuYXRpdmU6IExvYWQgZnJvbSBjc3YKICAjIHJlYWRfY3N2KCcuLi8uLi9kYXRhL2NvbW11bml0eV9sYWJlbGluZycpICU+JSBmaWx0ZXIodHlwZSA9ICdrbm93bGVkZ2VfYmFzZScsIGluc3RpdHV0ZSA9IHZhcl9pbnN0LCBkZXBhcnRtZW50ID0gdmFyX2RlcHQpICU+JSBhcnJhbmdlKGNvbSkgJT4lIHB1bGwobGFiZWwpCiAgIyAzcmQgYWx0ZXJuYXRpdmU6IGRlY2xhcmUgaGVyZQogICAgI2MoJzEgVElTICYgTWFya2V0cycsICcyID8gLi4uICcsKQogICkKYGBgCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KQ19udyAlPD4lIGxlZnRfam9pbihjb21fbmFtZXNfY2l0ICU+JSBzZWxlY3QoY29tLCBjb21fbmFtZSwgY29sKSwgYnkgPSAiY29tIikKYGBgCgoKKipOb3RlOioqIFRoaXMgYW5hbHlzaXMgcmVmZXJzIHRoZSBjby1jaXRhdGlvbiBhbmFseXNpcywgd2hlcmUgdGhlIGNpdGVkIHJlZmVyZW5jZXMgYW5kIG5vdCB0aGUgb3JpZ2luYWwgcHVibGljYXRpb25zIGFyZSB0aGUgdW5pdCBvZiBhbmFseXNpcy4gU2VlIHRhYiBgVGVjaG5pY2FsIGRlc2NyaXB0aW9uYGZvciBhZGRpdGlvbmFsIGV4cGxhbmF0aW9ucwoKIyMgS25vd2xlZGdlIEJhc2VzIHN1bW1hcnkKCkluIG9yZGVyIHRvIHBhcnRpdGlvbiBuZXR3b3JrcyBpbnRvIGNvbXBvbmVudHMgb3IgY2x1c3RlcnMsIHdlIGRlcGxveSBhICoqY29tbXVuaXR5IGRldGVjdGlvbioqIHRlY2huaXF1ZSBiYXNlZCBvbiB0aGUgKipMb3ZhaW4gQWxnb3JpdGhtKiogKEJsb25kZWwgZXQgYWwuLCAyMDA4KS4gVGhlIExvdmFpbiBBbGdvcml0aG0gaXMgYSBoZXVyaXN0aWMgbWV0aG9kIHRoYXQgYXR0ZW1wdHMgdG8gb3B0aW1pemUgdGhlIG1vZHVsYXJpdHkgb2YgY29tbXVuaXRpZXMgd2l0aGluIGEgbmV0d29yayBieSBtYXhpbWl6aW5nIHdpdGhpbi0gYW5kIG1pbmltaXppbmcgYmV0d2Vlbi1jb21tdW5pdHkgY29ubmVjdGl2aXR5LiBXZSBpZGVudGlmeSB0aGUgZm9sbG93aW5nIGNvbW11bml0aWVzID0ga25vd2xlZGdlIGJhc2VzLgoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CmtiX3N0YXRzIDwtIENfbncgJT4lCiAgZ3JvdXBfYnkoY29tX25hbWUpICU+JQogIHN1bW1hcmlzZShuID0gbigpLCBkZW5zaXR5X2ludCA9ICgoc3VtKGRncl9pbnQpIC8gKG4oKSAqIChuKCkgLSAxKSkpICogMTAwKSAlPiUgcm91bmQoMykpICU+JQogIHJlbG9jYXRlKGNvbV9uYW1lLCBldmVyeXRoaW5nKCkpCmBgYAoKYGBge3J9CmtiX3N1bSA8LUNfbncgJT4lIGdyb3VwX2J5KGNvbSkgJT4lIAogIHNlbGVjdChjb20sIG5hbWUsIGRncl9pbnQsIGRncikgJT4lCiAgYXJyYW5nZShjb20sIGRlc2MoZGdyX2ludCkpICU+JQogIG11dGF0ZShuYW1lID0gbmFtZSAlPiUgc3RyX3RydW5jKDE1MCkpICU+JQogIHNsaWNlX21heChvcmRlcl9ieSA9IGRncl9pbnQsIG4gPSAxMCwgd2l0aF90aWVzID0gRkFMU0UpICU+JSAKICBrYWJsZSgpIAoKZm9yKGkgaW4gMTpucm93KGNvbV9uYW1lc19jaXQpKXsKICBrYl9zdW0gPC0ga2Jfc3VtICU+JQogICAgcGFja19yb3dzKHBhc3RlMCgnS25vd2xlZGdlIEJhc2UgJywgaSwgJzogJywgY29tX25hbWVzX2NpdFtpLCAnY29tX25hbWUnXSwKICAgICAgICAgICAgICAgICAgICAgJyAgIChuID0gJywga2Jfc3RhdHNbaSwgJ24nXSwgJywgZGVuc2l0eSA9Jywga2Jfc3RhdHNbaSwgJ2RlbnNpdHlfaW50J10gJT4lIHJvdW5kKDIpLCAnKScgKSwgCiAgICAgICAgICAgICAgKGkqMTAtOSksICAoaSoxMCksIGxhYmVsX3Jvd19jc3MgPSAiYmFja2dyb3VuZC1jb2xvcjogIzY2NjsgY29sb3I6ICNmZmY7IikgCiAgfQoKa2Jfc3VtICU+JQogIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIiksIGZvbnRfc2l6ZSA9IDEwKQpgYGAKCiMjIERldmVsb3BtZW50IG9mIEtub3dsZWRnZSBCYXNlcwoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CmVsXzJtIDwtIHJlYWRSRFMocGFzdGUwKCcuLi8uLi90ZW1wL2VsXzJtXycsIHN0cl90b19sb3dlcih2YXJfaW5zdCksICdfJywgc3RyX3RvX2xvd2VyKHZhcl9kZXB0KSwgJy5yZHMnKSkgJT4lCiAgZHJvcF9uYSgpCmBgYAoKCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQpjaXRfY29tX3llYXIgPC0gZWxfMm0gJT4lCiAgY291bnQoY29tX2NpdCwgUFksIG5hbWUgPSAnVEMnKSAlPiUKICBncm91cF9ieShQWSkgJT4lCiAgbXV0YXRlKFRDX3JlbCA9IFRDIC8gc3VtKFRDKSkgJT4lCiAgdW5ncm91cCgpICU+JQogIGFycmFuZ2UoUFksIGNvbV9jaXQpICU+JQogIGxlZnRfam9pbihjb21fbmFtZXNfY2l0ICwgYnkgPSBjKCdjb21fY2l0JyA9ICdjb20nKSkgJT4lIAogIGNvbXBsZXRlKGNvbV9uYW1lLCBQWSwgZmlsbCA9IGxpc3QoVEMgPSAwLCBUQ19yZWwgPSAwKSkKCmBgYAoKYGBge3IsIGZpZy53aWR0aCA9IDE1LCBmaWcuaGVpZ2h0PTcuNX0KY2l0X2NvbV95ZWFyICU+JQogIHBsb3Rfc3VtbWFyeV90aW1lbGluZSh5MSA9IFRDLCB5MiA9IFRDX3JlbCwgdCA9IFBZLCB0X21pbiA9IFBZX21pbiwgdF9tYXggPSBQWV9tYXgsIGJ5ID0gY29tX25hbWUsIHBhbCA9IHBhbF9rYiwgbGFiZWwgPSBUUlVFLAogICAgICAgICAgICAgICAgICAgICAgICB5MV90ZXh0ID0gIk51bWJlciBjaXRhdGlvbnMgcmVjaWV2ZWQgYW5udWFsbHkiLCAgeTJfdGV4dCA9ICJTaGFyZSBvZiBjaXRhdGlvbnMgcmVjaWV2ZWQgYW5udWFsbHkiKSArCiAgcGxvdF9hbm5vdGF0aW9uKHRpdGxlID0gcGFzdGUoJ0tub3dsZWRnZSBCc2VzOicsIHZhcl9pbnN0LCAnRGVwdC4nLCB2YXJfZGVwdCwgc2VwID0gJyAnKSwKICAgICAgICAgICAgICAgICAgc3VidGl0bGUgPSBwYXN0ZSgnVGltZWZyYW1lOicsIFBZX21pbiwgJy0nLCBQWV9tYXggLCBzZXAgPSAnICcpLAogICAgICAgICAgICAgICAgICBjYXB0aW9uID0gJ0Fic29sdXRlIGtub3dsZWRnZSBiYXNlIGFwcGVhcmFuY2UgKGxlZnQpLCBSZWxhdGl2ZSBrbm93bGVkZ2UgYmFzZSBhcHBlYXJhbmNlIChyaWdodCknKQpgYGAKCiMjIFRlY2huaWNhbCBkZXNjcmlwdGlvbgpJbiBhIGNvLWNpdHRpb24gbmV0d29yaywgdGhlIHN0cmVuZ3RoIG9mIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBhIHJlZmVyZW5jZSBwYWlyICRtJCBhbmQgJG4kICgkc197bSxufV57Y29jfSQpIGlzIGV4cHJlc3NlZCBieSB0aGUgbnVtYmVyIG9mIHB1YmxpY2F0aW9ucyAkQyQgd2hpY2ggYXJlIGpvaW50bHkgY2l0aW5nIHJlZmVyZW5jZSAkbSQgYW5kICRuJC4gCgokJHNfe20sbn1ee2NvY30gPSBcc3VtX2kgY197aSxtfSBjX3tpLG59JCQKClRoZSBpbnR1aXRpb24gaGVyZSBpcyB0aGF0IHJlZmVyZW5jZXMgd2hpY2ggYXJlIGZyZXF1ZW50bHkgY2l0ZWQgdG9nZXRoZXIgYXJlIGxpa2VseSB0byBzaGFyZSBjb21tb25hbGl0aWVzIGluIHRoZW9yeSwgdG9waWMsIG1ldGhvZG9sb2d5LCBvciBjb250ZXh0LiBJdCBjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgYSBtZWFzdXJlIG9mIHNpbWlsYXJpdHkgYXMgZXZhbHVhdGVkIGJ5IG90aGVyIHJlc2VhcmNoZXJzIHRoYXQgZGVjaWRlIHRvIGpvaW50bHkgY2l0ZSBib3RoIHJlZmVyZW5jZXMuIEJlY2F1c2UgdGhlIHB1YmxpY2F0aW9uIHByb2Nlc3MgaXMgdGltZS1jb25zdW1pbmcsIGNvLWNpdGF0aW9uIGlzIGEgYmFja3dhcmQtbG9va2luZyBtZWFzdXJlLCB3aGljaCBpcyBhcHByb3ByaWF0ZSB0byBtYXAgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGNvcmUgbGl0ZXJhdHVyZSBvZiBhIGZpZWxkLgoKCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBORVhUIFBBUlQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KCiMgUmVzZWFyY2ggQXJlYXM6IEJpYmxpb2dyYXBoaWMgY291cGxpbmcgYW5hbHlzaXMgey50YWJzZXR9CgojIyBSZXNlYXJjaCBBcmVhcyBtYWluIHN1bW1hcnkKClRoaXMgaXMgYXJndWFibHkgdGhlIG1vcmUgaW50ZXJlc3RpbmcgcGFydC4gSGVyZSwgd2UgaWRlbnRpZnkgdGhlIGxpdGVyYXR1cmUncyBjdXJyZW50IGtub3dsZWRnZSBmcm9udGllciBieSBjYXJyeWluZyBvdXQgYSBiaWJsaW9ncmFwaGljIGNvdXBsaW5nIGFuYWx5c2lzIG9mIHRoZSBwdWJsaWNhdGlvbnMgaW4gb3VyIGNvcnB1cy4gVGhpcyBtZWFzdXJlICB1c2VzIGJpYmxpb2dyYXBoaWNhbCBpbmZvcm1hdGlvbiBvZiAgcHVibGljYXRpb25zIHRvIGVzdGFibGlzaCBhIHNpbWlsYXJpdHkgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlbS4gQWdhaW4sIG1ldGhvZCBkZXRhaWxzIHRvIGJlIGZvdW5kIGluIHRoZSB0YWIgYFRlY2huaWNhbCBkZXNjcmlwdGlvbmAuIEFzIHlvdSB3aWxsIHNlZSwgd2UgaWRlbnRpZnkgdGhlIG1haW4gcmVzZWFyY2ggYXJlYSwgYnV0IGFsc28gYSBzZXQgb2YgYWRqYWNlbnQgcmVzZWFyY2ggYXJlYXMgd2l0aCBzb21lIHRoZW9yZXRpY2FsL21ldGhvZG9sb2dpY2FsL2FwcGxpY2F0aW9uIG92ZXJsYXAuCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KTV9iaWIgPC0gcmVhZFJEUyhwYXN0ZTAoJy4uLy4uL3RlbXAvTV9iaWJfJywgc3RyX3RvX2xvd2VyKHZhcl9pbnN0KSwgJ18nLCBzdHJfdG9fbG93ZXIodmFyX2RlcHQpLCAnLnJkcycpKSAlPiUgYXNfdGliYmxlKCkKYGBgCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KY29tX25hbWVzX2JpYiA8LSB0aWJibGUoIAogIGNvbSA9IDE6KE1fYmliICU+JSBwdWxsKGNvbSkgJT4lIG5fZGlzdGluY3QoKSksCiAgdHlwZSA9ICdSQScsCiAgY29sID0gY29tICU+JSBnZ19jb2xvcl9zZWxlY3QocGFsID0gcGFsX3JhKSwKICBjb21fbmFtZSA9IAogICAgIyAjIDFzdCBhbHRlcm5hdGl2ZTogTnVtYmVyIHRoZW0gMS1uCiAgICBwYXN0ZSh0eXBlLCAxOihNX2JpYiAlPiUgcHVsbChjb20pICU+JSBuX2Rpc3RpbmN0KCkpKQogICAgIyAjIDJuZCBhbHRlcm5hdGl2ZTogTG9hZCBmcm9tIGNzdgogICMgcmVhZF9jc3YoJy4uLy4uL2RhdGEvY29tbXVuaXR5X2xhYmVsaW5nJykgJT4lIGZpbHRlcih0eXBlID0gJ3Jlc2VhcmNoX2FyZWEnLCBpbnN0aXR1dGUgPSB2YXJfaW5zdCwgZGVwYXJ0bWVudCA9IHZhcl9kZXB0KSAlPiUgYXJyYW5nZShjb20pICU+JSBwdWxsKGxhYmVsKQogICMgM3JkIGFsdGVybmF0aXZlOiBkZWNsYXJlIGhlcmUKICAgICNjKCcxIFRJUyAmIE1hcmtldHMnLCAnMiA/IC4uLiAnLCkKICApCmBgYAoKYGBge3IsIGluY2x1ZGU9RkFMU0V9Ck1fYmliICU8PiUgbGVmdF9qb2luKGNvbV9uYW1lc19iaWIgJT4lIHNlbGVjdChjb20sIGNvbV9uYW1lLCBjb2wpLCBieSA9ICJjb20iKQpgYGAKClRvIGlkZW50aWZ5IGNvbW11bml0aWVzIGluIHRoZSBmaWVsZCdzIGtub3dsZWRnZSBmcm9udGllciAobGFiZWxlZCAqKnJlc2VhcmNoIGFyZWFzKiopIHdlIGFnYWluIHVzZSB0aGUgKipMb3ZhaW4gQWxnb3JpdGhtKiogKEJsb25kZWwgZXQgYWwuLCAyMDA4KS4gV2UgaWRlbnRpZnkgdGhlIGZvbGxvd2luZyBjb21tdW5pdGllcyA9IHJlc2VhcmNoIGFyZWFzLgoKYGBge3IsIGluY2x1ZGU9RkFMU0V9CnJhX3N0YXRzIDwtIE1fYmliICU+JQogIGRyb3BfbmEoY29tKSAlPiUKICBncm91cF9ieShjb20sIGNvbV9uYW1lKSAlPiUKICBzdW1tYXJpc2UobiA9IG4oKSwgZGVuc2l0eV9pbnQgPSAoKHN1bShkZ3JfaW50KSAvIChuKCkgKiAobigpIC0gMSkpKSAqIDEwMCkgJT4lIHJvdW5kKDMpKSAlPiUKICBzZWxlY3QoY29tLCBjb21fbmFtZSwgZXZlcnl0aGluZygpKQpgYGAKCmBgYHtyfQpyYV9zdW0gPC0gTV9iaWIgJT4lIGdyb3VwX2J5KGNvbV9uYW1lKSAlPiUgCiAgbGVmdF9qb2luKE0gJT4lIHNlbGVjdChYWCwgQVUsIFBZLCBUSSwgVEMpLCBieSA9ICdYWCcpICU+JQogIG11dGF0ZShkZ3Jfc2VsZWN0ID0gKGRncl9pbnQgLyBtYXgoZGdyX2ludCkgKiAoVEMgLyBtYXgoVEMpKSkgKSAlPiUKICBzbGljZV9tYXgob3JkZXJfYnkgPSBkZ3Jfc2VsZWN0LCBuID0gMTAsIHdpdGhfdGllcyA9IEZBTFNFKSAlPiUgCiAgbXV0YXRlKFRDX3llYXIgPSBUQyAvICgyMDIxICsgMSAtIFBZKSwKICAgICAgICAgQVUgPSBBVSAlPiUgc3RyX3RydW5jKDI1KSwKICAgICAgICAgVEkgPSBUSSAlPiUgc3RyX3RydW5jKDEyNSkpICU+JQogIHNlbGVjdChjb21fbmFtZSwgQVUsIFBZLCBUSSwgZGdyX2ludCwgVEMsIFRDX3llYXIpICU+JQogIGthYmxlKCkKCgpmb3IoaSBpbiAxOm5yb3coY29tX25hbWVzX2JpYikpewogIHJhX3N1bSAgJTw+JQogICAgcGFja19yb3dzKHBhc3RlMCgnUmVzZWFyY2ggQXJlYSAnLCBpLCAnOiAnLCBjb21fbmFtZXNfYmliW2ksICdjb21fbmFtZSddLAogICAgICAgICAgICAgICAgICAgICAnICAgKG4gPSAnLCByYV9zdGF0c1tpLCAnbiddLCAnLCBkZW5zaXR5ID0nLCByYV9zdGF0c1tpLCAnZGVuc2l0eV9pbnQnXSAlPiUgcm91bmQoMiksICcpJyApLCAKICAgICAgICAgICAgICAoaSoxMC05KSwgIChpKjEwKSwgbGFiZWxfcm93X2NzcyA9ICJiYWNrZ3JvdW5kLWNvbG9yOiAjNjY2OyBjb2xvcjogI2ZmZjsiKSAKICB9CgpyYV9zdW0gJT4lIGthYmxlX3N0eWxpbmcoYm9vdHN0cmFwX29wdGlvbnMgPSBjKCJzdHJpcGVkIiwgImhvdmVyIiwgImNvbmRlbnNlZCIsICJyZXNwb25zaXZlIiksIGZvbnRfc2l6ZSA9IDEwKQpgYGAKCiMjIERldmVsb3BtZW50CgpgYGB7ciwgZmlnLndpZHRoID0gMTUsIGZpZy5oZWlnaHQ9Ny41fQpNX2JpYiAlPiUKICBsZWZ0X2pvaW4oTSAlPiUgc2VsZWN0KFhYLCBQWSksIGJ5ID0gJ1hYJykgJT4lCiAgbXV0YXRlKFBZID0gUFkgJT4lIGFzLm51bWVyaWMoKSkgJT4lCiAgZ3JvdXBfYnkoY29tX25hbWUsIFBZKSAlPiUgc3VtbWFyaXNlKG4gPSBuKCkpICU+JSB1bmdyb3VwKCkgJT4lCiAgZ3JvdXBfYnkoUFkpICU+JSBtdXRhdGUobl9QWSA9IHN1bShuKSkgJT4lIHVuZ3JvdXAoKSAlPiUKICBtdXRhdGUobl9yZWwgPSBuIC8gbl9QWSkgJT4lCiAgc2VsZWN0KGNvbV9uYW1lLCBQWSwgbiwgbl9yZWwpICU+JQogIGFycmFuZ2UoY29tX25hbWUsIFBZKSAlPiUgCiAgY29tcGxldGUoY29tX25hbWUsIFBZLCBmaWxsID0gbGlzdChuID0gMCwgbl9yZWwgPSAwKSkgJT4lCiAgcGxvdF9zdW1tYXJ5X3RpbWVsaW5lKHkxID0gbiwgeTIgPSBuX3JlbCwgdCA9IFBZLCB0X21pbiA9IFBZX21pbiwgdF9tYXggPSBQWV9tYXgsIGJ5ID0gY29tX25hbWUsIGxhYmVsID0gVFJVRSwgcGFsID0gcGFsX3JhLAogICAgICAgICAgICAgICAgICAgICAgICB5MV90ZXh0ID0gIk51bWJlciBwdWJsaWNhdGlvbnMgYW5udWFsbHkiLCB5Ml90ZXh0ID0gIlNoYXJlIG9mIHB1YmxpY2F0aW9ucyBhbm51YWxseSIpICsKICBwbG90X2Fubm90YXRpb24odGl0bGUgPSBwYXN0ZSgnUmVzZWFyY2ggQXJlYXM6JywgdmFyX2luc3QsICdEZXB0LicsIHZhcl9kZXB0LCBzZXAgPSAnICcpLAogICAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9IHBhc3RlKCdUaW1lZnJhbWU6JywgUFlfbWluLCAnLScsIFBZX21heCAsIHNlcCA9ICcgJyksCiAgICAgICAgICAgICAgICAgIGNhcHRpb24gPSAnQWJzb2x1dGUgcmVzZWFyY2ggYXJlYSBhcHBlYXJhbmNlIChsZWZ0KSwgUmVsYXRpdmUgcmVzZWFyY2ggYXJlYSBhcHBlYXJhbmNlIChyaWdodCknKQpgYGAKCiMjIyBDb25uZWN0aXZpdHkgYmV0d2VlbiB0aGUgcmVzZWFyY2ggYXJlYXMKCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQpnX2FnZyA8LSByZWFkUkRTKHBhc3RlMCgnLi4vLi4vdGVtcC9nX2JpYl9hZ2dfJywgc3RyX3RvX2xvd2VyKHZhcl9pbnN0KSwgJ18nLCBzdHJfdG9fbG93ZXIodmFyX2RlcHQpLCAnLnJkcycpKSAlTj4lCiAgYXJyYW5nZShjb20pICMgJT4lCiMgICBtdXRhdGUobmFtZSA9IG5hbWVzX3JhICU+JSBwdWxsKGNvbV9yYV9uYW1lKSwKIyAgICAgICAgICBjb2xvciA9IGNvbHNfcmEpCmBgYAoKYGBge3IsIGZpZy5oZWlnaHQ9IDcuNSwgZmlnLndpZHRoPTcuNX0KZ19hZ2cgJUU+JSAKICBmaWx0ZXIod2VpZ2h0ID4gMCAmIGZyb20gIT0gdG8pICU+JQogIGZpbHRlcih3ZWlnaHQgPj0gcXVhbnRpbGUod2VpZ2h0LCAwLjI1KSApICAlTj4lCiAgbXV0YXRlKGNvbSA9IGNvbSAlPiUgZmFjdG9yKCkpICU+JQogIGdncmFwaChsYXlvdXQgPSAiY2lyY2xlIikgKyAKICBnZW9tX2VkZ2VfZmFuKHN0cmVuZ2h0ID0gMC4wNzUsIGFlcyh3aWR0aCA9IHdlaWdodCksIGFscGhhID0gMC4yKSAgKyAKICBnZW9tX25vZGVfcG9pbnQoYWVzKHNpemUgPSBOLCBjb2xvciA9IGNvbSkpICArIAogIGdlb21fbm9kZV90ZXh0KGFlcyhsYWJlbCA9IGNvbSksIHJlcGVsID0gVFJVRSkgKwogIHRoZW1lX2dyYXBoKGJhc2VfZmFtaWx5ID0gIkFyaWFsIikgKwogIHNjYWxlX2NvbG9yX2JyZXdlcihwYWxldHRlID0gcGFsX3JhKSArCiAgbGFicyh0aXRsZSA9IHBhc3RlKCdSZXNlYXJjaCBBcmVhIENvbm5lY3Rpdml0eTonLCB2YXJfaW5zdCwgJ0RlcHQuJywgdmFyX2RlcHQsIHNlcCA9ICcgJyksCiAgICAgICAgICAgICAgICAgIHN1YnRpdGxlID0gcGFzdGUoJ1RpbWVmcmFtZTonLCBQWV9taW4sICctJywgUFlfbWF4ICwgc2VwID0gJyAnKSwKICAgICAgICAgICAgICAgICAgY2FwdGlvbiA9ICdOb2RlcyA9IElkZW50aWZpZWQgUmVzZWFyY2ggQXJlYXM7IEVkZ2VzOiBCaWJsaW9ncmFwaGljIGNvdXBsaW5nIHN0cmVuZ2h0IChKQWNjYXJkIHdlaWdodGVkKScpCmBgYAoKIyMgVGVjaG5pY2FsIGRlc2NyaXB0aW9uCkluIGEgYmlibGlvZ3JhcGhpYyBjb3VwbGluZyBuZXR3b3JrLCB0aGUgKipjb3VwbGluZy1zdHJlbmd0aCoqIGJldHdlZW4gcHVibGljYXRpb25zIGlzIGRldGVybWluZWQgYnkgdGhlIG51bWJlciBvZiBjb21tb25seSBjaXRlZCByZWZlcmVuY2VzIHRoZXkgc2hhcmUsIGFzc3VtaW5nIGEgY29tbW9uIHBvb2wgb2YgcmVmZXJlbmNlcyB0byBpbmRpY2F0ZSBzaW1pbGFyaXR5IGluIGNvbnRleHQsIG1ldGhvZHMsIG9yIHRoZW9yeS4gRm9ybWFsbHksIHRoZSBzdHJlbmd0aCBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYSBwdWJsaWNhdGlvbiBwYWlyICRpJCBhbmQgJGokICgkc197aSxqfV57YmlifSQpIGlzIGV4cHJlc3NlZCBieSB0aGUgbnVtYmVyIG9mIGNvbW1vbmx5IGNpdGVkIHJlZmVyZW5jZXMuIAoKJCRzX3tpLGp9XntiaWJ9ID0gXHN1bV9tIGNfe2ksbX0gY197aixtfSQkCgpTaW5jZSBvdXIgY29ycHVzIGNvbnRhaW5zIHB1YmxpY2F0aW9ucyB3aGljaCBkaWZmZXIgc3Ryb25nbHkgaW4gdGVybXMgb2YgdGhlIG51bWJlciBvZiBjaXRlZCByZWZlcmVuY2VzLCB3ZSBub3JtYWxpemUgdGhlIGNvdXBsaW5nIHN0cmVuZ3RoIGJ5IHRoZSBKYWNjYXJkIHNpbWlsYXJpdHkgY29lZmZpY2llbnQuIEhlcmUsIHdlIHdlaWdodCB0aGUgaW50ZXJjZXB0IG9mIHR3byBwdWJsaWNhdGlvbnMnIGJpYmxpb2dyYXBoeSAoc2hhcmVkIHJlZmVlbmNlcykgYnkgdGhlaXIgdW5pb24gKG51bWJlciBvZiBhbGwgcmVmZXJlbmNlcyBjaXRlZCBieSBlaXRoZXIgJGkkIG9yICRqJCkuIEl0IGlzIGJvdW5kZWQgYmV0d2VlbiB6ZXJvIGFuZCBvbmUsIHdoZXJlIG9uZSBpbmRpY2F0ZXMgdGhlIHR3byBwdWJsaWNhdGlvbnMgdG8gaGF2ZSBhbiBpZGVudGljYWwgYmlibGlvZ3JhcGh5LCBhbmQgemVybyB0aGF0IHRoZXkgZG8gbm90IHNoYXJlIGFueSBjaXRlZCByZWZlcmVuY2UuIFRoZXJlYnksIHdlIHByZXZlbnQgcHVibGljYXRpb25zIGZyb20gaGF2aW5nIGhpZ2ggY291cGxpbmcgc3RyZW5ndGggZHVlIHRvIGEgbGFyZ2UgYmlibGlvZ3JhcGh5IChlLmcuLCBsaXRlcmF0dXJlIHN1cnZleXMpLgoKJCRTX3tpLGp9XntqYWMtYmlifSA9XGZyYWN7QyhpIFxjYXAgail9e0MoaSBcY3VwIGopfSA9IFxmcmFje3Nfe2ksan1ee2JpYn19e2NfaSArIGNfaiAtIHNfe2ksan1ee2JpYn19JCQKCk1vcmUgcmVjZW50IGFydGljbGVzIGhhdmUgYSBoaWdoZXIgcG9vbCBvZiBwb3NzaWJsZSByZWZlcmVuY2VzIHRvIGNvLWNpdGUgdG8sIGhlbmNlIHRoZXkgYXJlIG1vcmUgbGlrZWx5IHRvIGJlIGNvdXBsZWQuIENvbnNlcXVlbnRseSwgYmlibGlvZ3JhcGhpYyBjb3VwbGluZyByZXByZXNlbnRzIGEgZm9yd2FyZCBsb29raW5nIG1lYXN1cmUsIGFuZCB0aGUgbWV0aG9kIG9mIGNob2ljZSB0byBpZGVudGlmeSB0aGUgY3VycmVudCBrbm93bGVkZ2UgZnJvbnRpZXIgYXQgdGhlIHBvaW50IG9mIGFuYWx5c2lzLgoKPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIE5FWFQgUEFSVCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgoKIyBLbm93bGVkZ2UgQmFzZXMsIFJlc2VhcmNoIEFyZWFzICYgVG9waWNzIEludGVyYWN0aW9uCgpgYGB7ciwgaW5jbHVkZT1GQUxTRX0KIyBOb2RlcwpubF8zbSA8LSBjb21fbmFtZXNfYmliICU+JQogIGJpbmRfcm93cyhjb21fbmFtZXNfY2l0KSAlPiUKICBiaW5kX3Jvd3MoY29tX25hbWVzX3RvcCkgJT4lCiAgcmVuYW1lKG5hbWUgPSBjb21fbmFtZSwKICAgICAgICAgY29tX25yID0gY29tKSAlPiUKICByZWxvY2F0ZShuYW1lKQoKIyBFZGdlcwplbF8ybV9rYiA8LSBlbF8ybSAlPiUKICBzZWxlY3QoLWZyb20sIC10bykgJT4lCiAgaW5uZXJfam9pbihjb21fbmFtZXNfY2l0ICU+JSBzZWxlY3QoY29tLCBjb21fbmFtZSksIGJ5ID0gYygnY29tX2NpdCcgPSAnY29tJykpICU+JQogIGlubmVyX2pvaW4oY29tX25hbWVzX2JpYiAlPiUgc2VsZWN0KGNvbSwgY29tX25hbWUsIGNvbCksIGJ5ID0gYygnY29tX2JpYicgPSAnY29tJykpICU+JQogIG11dGF0ZSh3ZWlnaHQgPSAxKSAlPiUKICByZW5hbWUoZnJvbSA9IGNvbV9uYW1lLngsCiAgICAgICAgIHRvID0gY29tX25hbWUueSkgJT4lICMgZ2VuZXJpYwogIHNlbGVjdChmcm9tLCB0bywgd2VpZ2h0LCBjb2wpICU+JSAKICBkcm9wX25hKCkgJT4lIAogIGNvdW50KGZyb20sIHRvLCBjb2wsIHd0ID0gd2VpZ2h0LCBuYW1lID0gJ3dlaWdodCcpICU+JQogIGZpbHRlcihwZXJjZW50X3Jhbmsod2VpZ2h0KSA+PSAwLjI1KSAlPiUKICB3ZWlnaHRfamFjY2FyZChpID0gZnJvbSwgaiA9IHRvLCB3ID0gd2VpZ2h0KSAlPiUgCiAgc2VsZWN0KC13ZWlnaHQpCgplbF8ybV90b3BpYyA8LSB0ZXh0X2xkYV9nYW1tYSAlPiUgc2VsZWN0KC10b3BpYywgLWNvbCkgJT4lCiAgbGVmdF9qb2luKE1fYmliICU+JSBzZWxlY3QoWFgsIGNvbSkgJT4lIGRyb3BfbmEoY29tKSwgYnkgPSBjKCdkb2N1bWVudCcgPSAnWFgnKSkgJT4lCiAgaW5uZXJfam9pbihjb21fbmFtZXNfYmliICU+JSBzZWxlY3QoY29tLCBjb21fbmFtZSwgY29sKSwgYnkgPSBjKCdjb20nID0gJ2NvbScpKSAlPiUKICByZW5hbWUoZnJvbSA9IGNvbV9uYW1lLnksCiAgICAgICAgIHRvID0gY29tX25hbWUueCwKICAgICAgICAgd2VpZ2h0ID0gZ2FtbWEpICU+JSAjIGdlbmVyaWMKICBzZWxlY3QoZnJvbSwgdG8sIHdlaWdodCwgY29sKSAlPiUgCiAgZHJvcF9uYSgpICU+JSAKICBjb3VudChmcm9tLCB0bywgY29sLCB3dCA9IHdlaWdodCwgbmFtZSA9ICd3ZWlnaHQnKSAlPiUKICBmaWx0ZXIocGVyY2VudF9yYW5rKHdlaWdodCkgPj0gMC4yNSkgJT4lCiAgd2VpZ2h0X2phY2NhcmQoaSA9IGZyb20sIGogPSB0bywgdyA9IHdlaWdodCkgJT4lIHNlbGVjdCgtd2VpZ2h0KQoKIyBncmFwaApnXzNtIDwtIGVsXzJtX2tiICU+JSAKICBiaW5kX3Jvd3MoZWxfMm1fdG9waWMpICU+JQogIGFzX3RibF9ncmFwaChkaXJlY3RlZCA9IFRSVUUpICVOPiUKICBsZWZ0X2pvaW4obmxfM20sIGJ5ID0gJ25hbWUnKSAlPiUKICBtdXRhdGUoCiAgICBsZXZlbCA9IGNhc2Vfd2hlbigKICAgICAgdHlwZSA9PSAiS0IiIH4gMSwKICAgICAgdHlwZSA9PSAiUkEiIH4gMiwKICAgICAgdHlwZSA9PSAiVFAiIH4gMyksCiAgICBjb29yZF95ID0gMC4xLAogICAgY29vcmRfeCA9IDAuMDAxICsgMS8obWF4KGxldmVsKS0xKSAqIChsZXZlbC0xKQogICAgKSAgJU4+JQogIGZpbHRlcighbm9kZV9pc19pc29sYXRlZCgpLCAhaXMubmEobGV2ZWwpKQpgYGAKCmBgYHtyLCBpbmNsdWRlPUZBTFNFfQojIyBCdWlsZCBzYW5rZXkgcGxvdApmaWcgPC0gcGxvdF9seSh0eXBlID0gInNhbmtleSIsIAogICAgICAgICAgICAgICBvcmllbnRhdGlvbiA9ICJoIiwKICAgICAgICAgICAgICAgYXJyYW5nZW1lbnQgPSAic25hcCIsCiAgbm9kZSA9IGxpc3QoCiAgICBsYWJlbCA9IGdfM20gJU4+JSBhc190aWJibGUoKSAlPiUgcHVsbChuYW1lKSwKICAgIHggPSBnXzNtICVOPiUgYXNfdGliYmxlKCkgJT4lIHB1bGwoY29vcmRfeCksCiAgICB5ID0gZ18zbSAlTj4lIGFzX3RpYmJsZSgpICU+JSBwdWxsKGNvb3JkX3kpLAogICAgY29sb3IgPSBnXzNtICVOPiUgYXNfdGliYmxlKCkgJT4lIHB1bGwoY29sKSwgCiAgICBwYWQgPSA0CiAgKSwgCiAgbGluayA9IGxpc3QoCiAgICBzb3VyY2UgPSAoZ18zbSAlRT4lIGFzX3RpYmJsZSgpICU+JSBwdWxsKGZyb20pKSAtMSwKICAgIHRhcmdldCA9IChnXzNtICVFPiUgYXNfdGliYmxlKCkgJT4lIHB1bGwodG8pKSAtMSwKICAgIHZhbHVlID0gIGdfM20gJUU+JSBhc190aWJibGUoKSAlPiUgcHVsbCh3ZWlnaHRfamFjKSwKICAgIGNvbG9yID0gZ18zbSAlRT4lIGFzX3RpYmJsZSgpICU+JSBwdWxsKGNvbCkgJT4lIGNvbDJyZ2IoKSAlPiUgYXMubWF0cml4KCkgJT4lIHQoKSAlPiUgYXNfdGliYmxlKCkgJT4lIAogICAgICBtdXRhdGUoY29sX3JnYiA9IHBhc3RlMCgncmdiYSgnLCByZWQsICcsJyAsIGdyZWVuLCAnLCcsIGJsdWUsICcsMC43NSknKSkgJT4lICBwdWxsKGNvbF9yZ2IpCiAgICApCikgJT4lIAogIGxheW91dCh0aXRsZSA9IHBhc3RlKCdLbm93bGVkZ2UgQmFzZXMsIFJlc2VhcmNoIEFyZWFzICYgVG9waWNzOicsIHZhcl9pbnN0LCAnRGVwdC4nLCB2YXJfZGVwdCwgc2VwID0gJyAnKSwKICAgICAgICAgbWFyZ2luID0gbGlzdChsID0gNTAsIHIgPSA1MCwgYiA9IDEwMCwgdCA9IDEwMCwgcGFkID0gMikpIApgYGAKCmBgYHtyLCBmaWcuaGVpZ2h0PSAxMCwgZmlnLndpZHRoPTEyLjV9CmZpZwpgYGAKCjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBORVhUIFBBUlQgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLS0+CjwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIC0tPgo8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtLT4KCiMgRW5kbm90ZXMKCkFsbCByZXN1bHRzIGFyZSBwcmVsaW1pbmFyeSBzbyBmYXIuLi4KCmBgYHtyfQojIEFmdGVyIGtuaXR0ZWQgZG8gdGhpcwojZmlsZS5yZW5hbWUoZnJvbSA9ICI5Ml9kZXNjcmlwdGl2ZXNfbWFwcGluZy5uYi5odG1sIiwgdG8gPSBwYXN0ZTAoJy4uL291dHB1dC9maWVsZF9tYXBwaW5nL2ZpZWxkX21hcHBpbmdfJywgc3RyX3RvX2xvd2VyKHZhcl9pbnN0KSwgJ18nLCBzdHJfdG9fbG93ZXIodmFyX2RlcHQpLCAnLmh0bWwnKSkKYGBgCgoKCgo=